window.postmessage() 方法可以安全地實現跨源通訊。通常,對於兩個不同頁面的指令碼,只有當執行它們的頁面位於具有相同的協議(通常為https),埠號(443為https的預設值),以及主機 (兩個頁面的模數 document.domain設定為相同的值) 時,這兩個指令碼才能相互通訊。window.postmessage() 方法提供了一種受控機制來規避此限制,只要正確的使用,這種方法就很安全。
otherwindow.postmessage(message, targetorigin, [transfer]);從廣義上講,乙個視窗可以獲得對另乙個視窗的引用(比如 targetwindow = window.opener),然後在視窗上呼叫 targetwindow.postmessage() 方法分發乙個 messageevent 訊息。接收訊息的視窗可以根據需要自由處理此事件。傳遞給 window.postmessage() 的引數(比如 message )將通過訊息事件物件暴露給接收訊息的視窗。
父頁面生成按鈕--->生成子頁面--->子頁面定義接收訊息函式
父頁面傳送訊息按鈕--->在子頁面中接收訊息--->在子頁面中插入
接收的訊息
父的**:
html
頁面跳轉的
給子視窗傳送資訊
js
let suburl = document.queryselector('#changeurl')
let submit = document.queryselector('#submit')
let send = null
suburl.onclick = function()
sendmessage.onclick = function(event) catch(err)
}
子的**
html
js
let temp = document.createelement('p')
debugger;
window.addeventlistener('message',function(event),false)
還有就是下面這種寫法不知道為啥也是不生效的,傳送訊息只能單獨在事件中寫。
let suburl = document.queryselector('#changeurl')
let submit = document.queryselector('#submit')
let send = null
suburl.onclick = function() catch(err)
}// sendmessage.onclick = function(event) catch(err)
// }
子傳父的大多都有,我這裡就不再贅述了。
注意的點:
iframe 物件中有contentwindow屬性,而該屬性下又有postmessage方法。
window.open() 是有返回物件的。返回的物件中又有postmessage方法。
頁面和頁面之間傳輸資料
在頁面和頁面之間傳輸資料的時候 1 可以使用cookie 和 session 2 可以使用from表單傳輸位址的時候 給form 表單的href裡邊的index.php 後邊新增乙個 加上想要傳送的資料.傳輸方法可以使用 post方法,但是在傳資料過去的時候,id值是直接跟在位址列上的,所以是明文傳...
跨域呼叫 postMessage
postmessage語法 環境 頁面a已經將頁面b引入成子頁面,a向它的子頁面b傳資料則需要在頁面中加乙個iframe然後點postmessage。b頁面向a頁面傳資料則直接 window.parent.postmessage data 就可以了 1 父頁面a的語法 document.getele...
跨文件通訊postMessage
window.postmessage message,origin,transfer message 最好是傳遞字串 transfer 不常使用,是一串課message同時傳遞的transferable物件,這些物件的所有權將被轉移給訊息的接收方,而傳送一方不在保留所有權 a.html lang e...