當在乙個頁面中,有通過iframe嵌入的新的window時,如果想實現兩個window之間的通訊,會可能涉及到跨域的問題,直接訪問肯定是被禁止的。使用postmessage就可以安全的繞過這些限制,實現通訊。
本文通過乙個簡單的demo,演示下postmessage如何使用,以及其中要注意的幾個問題。
message需要發出的資訊,型別為string 物件或者其他
targetorigin協議+主機+埠號,作為資訊接收端的url值,只有window的網域名稱和埠號完全和此匹配的時候,資訊才能發出去。如果將此值設為
*
,表示任意網域名稱的window都能接收到此訊息,但是出於安全考慮,通常不建議這麼做
關於postmessage方法的呼叫者,需要注意的是:
呼叫者為需要接收訊息的window物件,也就說誰呼叫該方法,誰就接收資訊。
targetwindow.postmessage('hello world!', '');
當postmessage
方法被成功呼叫的時候,在接收端會觸發乙個messageevent, 可以提前繫結乙個事件監聽函式,在接收到資訊時,做相應的處理
//給資訊接收端的window繫結事件監聽
window.addeventlistener('message', function
(e) );
關於引數e
iframe跨域通訊
簡述 window.postmessage方法,允許跨視窗通訊,不論這兩個視窗是否同源。視窗都可以通過message事件,監聽對方的訊息。語法 otherwindow.postmessage message,targetorigin,transfer message 傳送的內容。targetorgi...
iframe跨域通訊
重點來了 貼 父級頁面傳送資訊給子級 var son document.getelementbyid st st為子級iframe的id url可以為純網域名稱也可以為 當為 時所有子級都會接收到 當為純網域名稱時,只有這個網域名稱才會收到 url message為你要傳送的訊息 message 我...
iframe 通訊和跨域通訊
幾年前頁面裡使用iframe巢狀使用的還是很多的。以下是多種使用方法 1 同域下巢狀 父頁面 window.nl ad function function fu 子頁面 父頁面呼叫子頁面 iframename.window.document.xx iframename.window.function...