JavaScript出于安全方面的考虑,不容许跨域调用其余页面的对象。但在安全限制的同时也给注入iframe或是ajax应用上带来了很多麻烦。这里把涉及到跨域的一些问题简单地整理一下:html
首先什么是跨域,简单地理解就是由于JavaScript同源策略的限制,a.com 域名下的js没法操做b.com或是c.a.com域名下的对象。更详细的说明能够看下表:web
对于主域相同子域不一样的通讯方法这里不一一列举了,这里主要讲解一下跨主域的通讯问题。ajax
window.postMessage 是一个用于安全的使用跨源通讯的方法。一般,不一样页面上的脚本只在这种状况下被容许互相访问,当且仅当执行它们的页面所处的位置使用相同的协议(一般都是 http)、相同的端口(http默认使用80端口)和相同的主机(两个页面的 document.domain 的值相同)。 在正确使用的状况下,window.postMessage 提供了一个受控的机制来安全地绕过这一限制。api
http://caniuse.com/#search=postMessage跨域
ie6/7有个漏洞,父窗口与全部的iframe共享window.navigator对象,能够利用这个漏洞,因为ie6/7不支持postMessage,因此能够利用这个漏洞对ie6/7作兼容跨域通讯支持。浏览器
途中A过程和B过程都是初始化监听事件,相似于onmessage事件。只不过实现方法不同而已。安全
按执行顺序来描述的话,以下:dom