HTML5 postMessage 跨域窗口信息传递

来源:互联网 发布:oracle12c新建数据库 编辑:程序博客网 时间:2024/05/19 17:08

认识这个API,还要从需求说起。

公司由个前端页面是使用ifreame嵌入在另一家公司页面中的,这家公司由一个切换主题的按钮,而点击切换主题,我们的页面也需要进行主题切换。而他们的服务和我们的服务是分开的,此时窗口间的信息传递就不能使用iframe框架集随意传递了,于是找到了postMessage。

先看一下MDN的说明:

window.postMessage() 方法可以安全地实现跨源通信。通常,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https),端口号(443为https的默认值),以及主机 (两个页面的模数 Document.domain设置为相同的值) 时,这两个脚本才能相互通信。window.postMessage() 方法提供了一种受控机制来规避此限制,只要正确的使用,这种方法就很安全。

说的已经很明白了,完全能解决我的需求,下面直接上代码:

// 发送contentWindow.postMessage('this is a message','http://www.example.com')
// 接收window.addEventListener('message', function(e){    if(e.source !== window.parent) return    let value = e.data    //...}, false)

如果想看更详细的信息,可查看这个博客。
如果要看标准,MDN走你

阅读全文
0 0