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