页面与内嵌iframe的数据通信

例如A页面里的iframe嵌套B页面,B页面获取A页面的数据
1.通过url,参数拼接,这种适用于单向传递参数,列如做分享功能
具体为:a系统通过iframe的src携带参数,b在页面中通过window.location 获取参数并存入locaStorage

2.通过postMessage方法,此方法可以建立不同 origin 的两个窗口之间的双向数据通信,这种方式可以建立不同域名的页面间的双向通信,可用于较复杂的场景
具体为:a页面通过postMessage()发送消息,b页面中通过window.addEventListener(‘message’,fn())接收,存入localStorage

// An highlighted block
域名1下的a页面

<iframe id="iframe" src="http://www.domain2.com/b.html"></iframe>
 
<script>
var iframe = document.getElementById('iframe');
 
iframe.onload = function() {
   // 向b页面发送跨域数据
   iframe.contentWindow.postMessage('来自a的消息', 'http://www.domain2.com');
};
 
// 也接受b页面发的数据
window.addEventListener('message',(e) => {
    console.log(e.data);
}, false);
</script>

b页面同a页面一样接收和发送信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值