html5的postMessage简易通俗使用说明

其中的三种场景

1. 可以实现页面和里面iframe页面之间的通讯

场景:页面A中通过iframe嵌入B页面
  • A页面要提交消息给B页面
iframeEle.contentWindow.postMessage() 
  • B页面要提交消息给A页面
window.parent.postMessage(message, targetOrigin, [transfer])

postMessage()方法 参数说明

2. 可以实现窗口和通过window.open的窗口间的通讯

场景:页面A通过调用window.open()打开B页面
  • A页面向B页面发送消息
// 
var openWindow = window.open()
// 如果直接openWindow.postMessage()是不行的,要异步才可以的
setTimeout(function(){
  openWindow.postMessage()
})
  • B页面向A页面发送消息
window.opener.postMessage(message, targetOrigin, [transfer])

postMessage()方法 参数说明

3. 可以实现窗口和通过a标签新打开的窗口间的通讯

场景:A页面里面有一个例如:<a href="B页面" target="_blank">新打开B页面</a>这样的一个a标签,能够新窗口中打开一个B页面
  • B页面向A页面发送消息
window.opener.postMessage(message, targetOrigin, [transfer])

postMessage()方法 参数说明

  • 如果A页面想要给B页面也返回消息的话,可以利用message响应事件中的source属性来实现
window.addEventListener('message', function(event){
  event.source.postMessage()
})

注意: 对于上面这三种使用,对应接受消息的页面,也应该有window.addEventListener('message', function(){})的,这里就省略了,请知道!

然后window.addEventListener("message", receiveMessage, false);中,对于receiveMessage函数中,有event对象,其中包括data,origin,source这几个属性。

  • data 接收到的消息
  • origin 调用 postMessage 时消息发送方窗口的origin
  • source 对发送消息的窗口对象的引用; 所以可以使用此来在具有不同origin的两个窗口之间建立双向通信。

参考链接:
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,403评论 1 45
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 13,293评论 0 13
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,904评论 0 17
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,902评论 1 32
  • 概述 在浏览器中,window对象(注意,w为小写)指当前的浏览器窗口。它也是所有对象的顶层对象。 “顶层对象”指...
    许先生__阅读 5,665评论 0 6

友情链接更多精彩内容