跨文本消息传递(XDM)指来自不同域的页面间传递消息。只要是postMessage()
方法。该方法接收两个参数,一个是需要传入的数据,另一个是传入数据的域。如果第二个参数是‘*’,那么可以消息发送给任何域的文档。
传递消息页面:
<iframe id="myframe" src="mesg-next.html"></iframe>
var iframeWindow = document.getElementById("myframe").contentWindow;
iframeWindow.postMessage('我是发送的消息', "*");
接收到消息会异步触发message事件,接收到的消息对象包括以下3个信息:
- data:作为
postMessage()
第一个参数传入的字符串数据 - origin:发送消息的文档所在域
- source:发送消息的文档window代理。这个代理主要是用于发送消息的窗口,如果发送消息来自同一个域,那么着对象计时window
接收消息页:
addHandler(window, 'message', function(event) { //触发message事件
console.log(event.data); //输出'我是发送的消息'
event.source.postMessage("received", '*') //给发送消息的域传输数据
})
当发送消息页接收到反馈的数据后,也可以通过message事件获取数据。
发送消息页获取反馈数据:
addHandler(window, 'message', function(event) {
console.log(event.data); //输出'received'
})
支持浏览器有ie8+、Firefox3.5+、Safari4+、opera、chrome