iframe 跨域 父页面向子页面传值

今天碰到一个需求,是不同域的两个页面之间传值

在网上找了一下,一般有两个解决方案,一个是建立一个代理页面,通过代理页面传值,

另一个方法是通过H5的postMessage方法传值,今天用的是第二种。

首先,在父页面A中建立一个iframe,其中src要写好子页面B的地址,然后在A页面中写如下方法:

        var iframe = document.getElementById("onemap");
        var msg = {loginName:'arcgis',loginPassword:'Esri1234'};
        var childDomain = "https://geoplat.training.com";
        
        iframe.contentWindow.postMessage(msg,childDomain);

记住,childDomain与A的iframe的src地址不一样,childDomain是域,而src是域中的一个页面

msg是传输的信息,可以是字符串,也可以是对象。

上面的方法一定要写在一个函数中,并通过点击事件调用,如果希望iframe开始为空,点击后在设置src,

可以在设置src之后,通过setTimeout设置一定时间后在传输信息。

在子页面B中,通过对window添加事件获取传输过来的信息:

            window.addEventListener("message",function(obj){
               
                var name = obj.data.loginName;
                var password = obj.data.loginPassword;
                login.iframeChildLogin(name,password);
            },false);
这样就完成了从不同域的父页面向子页面传值的过程
posted @ 2020-08-06 10:11  front-gl  阅读(1300)  评论(0编辑  收藏  举报