跨iframe通訊方案

2021-07-26 07:01:43 字數 826 閱讀 9902

當在乙個頁面中,有通過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...