Vue 进阶(九十二):应用 postMessage 实现窗口通信
一、拓展阅读
在前端应用中,窗口间通信应用场景很多,比如弹出 qq 登录认证窗。
二、postMessage 语法
复制代码
注意⚠️postMessage
要通过window
对象调用!因为这里的window
不只是当前window
!大部分使用postMessage
的时候,都不是本页面的window
,而是其他网页的window
!如:
iframe
的contentWindow
;通过
window.open
方法打开新窗口的window
;window.opener
如果你使用postMessage
时没有带window
,就是用的本页面的window
来调用它。
2.1 参数说明
msg
这是要传递的消息。它可以是一切javascript
参数,如字符串,数字,对象,数组,而不是和json
一样只局限于字符串。
targetOrigin
这个参数称作“目标域”,注意⚠️,是目标域不是本域!比如,你想在 2.com 的网页上往 1.com 网页上传消息,那么这个参数就是“http://1.com/”,而不是 2.com.
另外,一个完整的域包括:协议,主机名,端口号。如:http://g.cn:80/
window.open
方法会返回一个窗口对象,使用这个对象可以向子窗口发送消息,而子窗口可以通过window.opener
向父窗口发送消息,示例如下:
复制代码
复制代码
由于postMessage
是通过网络协议,所以不能以直接在浏览器以打开html
的方式进行调试。而是应该放在服务器上,走网络协议。
三、拓展阅读
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/031de965220cd7538f7f0b6d6】。文章转载请联系作者。
评论