父子頁面跨域通訊

2021-10-22 23:19:30 字數 1101 閱讀 8119

該window.postmessage()方法安全地啟用window物件之間的跨源通訊;例如,在頁面和它產生的彈出視窗之間,或者在頁面和嵌入其中的iframe之間。

targetwindow.postmessage(message, targetorigin, [transfer ]);
要傳送到其他視窗的資料。使用結構化轉殖演算法序列化資料。這意味著您可以將各種各樣的資料物件安全地傳遞到目標視窗,而無需自己序列化。

指定要排程的事件的targetwindow的原點,可以是文字字串"*"(表示沒有首選項),也可以是uri。如果在計畫排程事件時,targetwindow文件的方案,主機名或埠與targetorigin提供的內容不匹配,則不會排程該事件;只有當所有的三個條件都匹配時,將排程該事件。該機制可以控制傳送訊息的位置;例如,如果postmessage()用於傳輸密碼,則該引數必須是uri,其**與包含密碼的訊息的預期接收者相同,以防止惡意第三方攔截密碼。始終提供具體的targetorigin,而不是 " * ",如果您知道其他視窗的文件應該位於何處。未能提供特定目標會洩露您傳送給任何感興趣的惡意站點的資料。

是與訊息一起傳輸的transferable物件序列。這些物件的所有權將提供給目標端,並且它們在傳送端不再可用。

open window 通訊
// open window

var newwindow = window.open("");

newwindow.postmessage(,'*');

window.opener.postmessage(,'*');

iframe通訊
// iframe

window.parent.postmessage(,'*');

iframedom.contentwindow.postmessage(,'*');

監聽
window.addeventlistener('message', function(e))

iframe跨域父子頁面通訊方法

儘管iframe因相容 效能等問題逐漸被替換掉,但有不少存量專案仍在使用。最近,我們部門一位小夥伴遇到iframe跨域相關問題,詳細如下 問題前置條件 有兩個系統a b 都是銀行存量老系統 a b跨域 a系統中有乙個頁面a b系統中有乙個頁面b b以iframe方式嵌在a頁面中。問題描述 那麼,if...

iframe父子頁面之間通訊 跨域

最近做官網的需求中,涉及到使用iframe。在iframe中會有父子頁面之間的通訊問題是比較頭疼的事情。下面總結下跨域情況下父子頁面之間怎麼進行通訊。父頁面 網域名稱1 子頁面 網域名稱2。父頁面 iframedom src 將引數放在req中,通過src傳到子頁面中 子頁面 var search ...

不同頁面通訊與跨域

相信跨域有什麼手段,大家都背得滾瓜爛熟了。現在我們來做一些不在同乙個tab頁面或者跨域的實踐。localstorage是瀏覽器同域標籤共用的儲存空間,所以可以用來實現多標籤之間的通訊。html5出現了乙個事件 onstorage,我們在window物件上新增監聽就可以監聽到變化 window.add...