postMessage解决Chrome的跨域传值问题(chrome不支持showModalDialog)

文章介绍了如何在JavaScript中实现父页面向子页面以及子页面向父页面传递数据的方法,主要利用了window的message事件和postMessage方法。父页面通过监听message事件接收子页面发送的数据,而子页面则可以通过window.open打开并传值给父页面。
摘要由CSDN通过智能技术生成

一、父页面向子页面传值:

a.父页面监听

    window.addEventListener('message',function(e){    

                console.log("父 接受 子",e)

                var ret = e.data;

                //处理数据 

        },false);

b.子页面发送

//1.获得父页面

  parentWindow = window.opener;

//2.利用postMessage向指定的父页面传值,*代表所有均可访问,也可添加指定的url

  parentWindow.postMessage(“来自子页面的数据”, '*');

        

二、子页面向父页面传值:

//a.子页面监听

window.addEventListener("message", function (e) {

        console.log("子->父", e.data)

//数据处理       

    }, false)

//b.父页面在子页面打开成功后传值

       //1.使用window.open打开子页面

  var ret = window.open (strUrl, array, "dialogHeight:500px;dialogWidth:600px;center:Yes;Help:No;Resizable:No;Scroll:0;Status:no;Copyhistory:yes;")  ;

       //2.子页面打开之后,父页面传值(使用settimeout,否则页面可能没打开成功就走到这一步)

setTimeout(

              function(){

                  ret.postMessage(“父页面传递的值”,strUrl)

              }, 300

            )        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值