postMessage解決跨域、解決iframe跨視窗訊息傳送
阿新 • • 發佈:2019-02-03
在開發過程中總是遇到各種各樣的問題,比如跨域,今天說的是iframe的postMessage跨域,是H5的一個跨域方式,直接上使用的程式碼:
1、子頁面向主頁面傳送訊息
// str是一個物件,JSON.stringify是JS將一個數組或者是物件轉換成一個JSON字串; // 後面的*是傳遞給所有的視窗 window.parent.postMessage(JSON.stringify(str),"*"); // 上層父級頁面接收訊息 window.addEventListener('message',function(e){ // 接收到訊息之後的業務處理邏輯 // 其中e.data是傳過來內容 // 其中e.source 傳過來的物件 }
2、主頁面向子頁面傳送訊息
// 主頁面給子頁面傳送訊息
var childIframe= document.getElementById('child');
//傳送訊息
childIframe.contentWindow.postMessage({"a":"111"},"*");
// 子頁面接收訊息
window.addEventListener('message',function(e){
// 接收到訊息之後的業務處理邏輯
// 其中e.data是傳過來內容
// 其中e.source 傳過來的物件
// 其中e.origin 傳送訊息視窗的源(協議+主機+埠號)
})