跨域消息传输window.postMessage()

该方法是HTML5用于跨域消息传输的API

发送窗口

window.postMessage()方法被调用时,会在所有页面脚本执行完毕之后(e.g., 在该方法之后设置的事件、之前设置的timeout 事件,etc.)向目标窗口派发一个 MessageEvent消息。 该MessageEvent消息有四个属性需要注意:
message 属性表示该message 的类型;
data 属性为 window.postMessage的第一个参数;
origin 属性表示调用window.postMessage()方法时调用页面的当前状态;
source 属性记录调用window.postMessage()方法的窗口信息。
语法

otherWindow.postMessage(message, targetOrigin, [transfer]);

otherWindow:表示发送数据的窗口的window的引用,包括iframe的contentWindow属性和通过window.open打开的新窗口。
message表示要发送的数据,包扩字符串和对象(ie9以下不支持,可以利用字符串和json互换)。
origin表示接收窗口的域。

接收窗口

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event)
{
  // For Chrome, the origin property is in the event.originalEvent
  // object.
  var origin = event.origin || event.originalEvent.origin; 
  if (origin !== "http://example.org:8080")
    return;

  // ...
}

回调函数接受一个事件对象event, event包含属性
data:接受的数据
origin:发送窗口的域
source:发送端的DOMWindow对象

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Section1、为什么要跨域? 自古以来(1995年起),为了用户的信息安全,浏览器就引入了同源策略。那么同源策...
    qhaobaba阅读 2,981评论 0 0
  • Section1、为什么要跨域? 自古以来(1995年起),为了用户的信息安全,浏览器就引入了同源策略。那么同源策...
    不去解释阅读 3,644评论 0 0
  • 什么是同源策略? 同源策略是指,浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授...
    upup_dayday阅读 1,800评论 0 0
  • 在电影版《微微一笑很倾城》里有一个镜头,井柏然给客户公司讲解自己的方案,用的是双手环胸的姿势,当时我跟同伴...
    F小姐写字阅读 3,375评论 0 0
  • 若你爱我 你会知晓我眉间的惆怅 若你爱我 你会熟悉我步伐的声音 若你爱我 你会看懂我背影的铿锵 若你爱我 你会明白...
    林下杉杉阅读 2,682评论 1 8