JavaScript因为同源策略的限制,跨域通讯一直是棘手的问题。固然解决方案也有不少:html
各类方案网上都有不少实例代码,你们能够本身搜索一下。
html5中最炫酷的API之一:就是 跨文档消息传输Cross Document Messaging 。高级浏览器Internet Explorer 8+, chrome,Firefox , Opera 和 Safari 都将支持这个功能。这个功能实现也很是简单主要包括接受信息的”message”事件和发送消息的”postMessage”方法。html5
发送消息的”postMessage”方法web
向外界窗口发送消息:chrome
otherWindow.postMessage(message, targetOrigin);
otherWindow: 指目标窗口,也就是给哪一个window发消息,是 window.frames 属性的成员或者由 window.open 方法建立的窗口跨域
参数说明:浏览器
接受信息的”message”事件app
var onmessage = function (event) { var data = event.data; var origin = event.origin; //do someing }; if (typeof window.addEventListener != 'undefined') { window.addEventListener('message', onmessage, false); } else if (typeof window.attachEvent != 'undefined') { //for ie window.attachEvent('onmessage', onmessage); }
回调函数第一个参数接收 Event 对象,有三个经常使用属性:dom