16.1 跨文檔消息傳遞

跨文檔消息傳送(cross-document messaging)簡稱XDM。指的是在來自不同域的頁面間傳遞消息。
  • XDM的核心是postMessage()方法。這個方法的目的只有一個:向另一個地方傳遞數據。
  • 對於XDM而言,‘另一個地方’指的是包含在當前頁面中的iframe元素,或者由當前頁面彈出的窗口。
  • postMessage()方法接收兩個參數:一條消息和一個表示消息接收方來自哪個域的字符串。其中,第二個參數對保障安全通信非常重要,可以防止瀏覽器吧消息發送到不安全的地方。
  • 接收到XDM消息時,會觸發window對象的message事件。觸發message事件後,傳遞給onmessage事件處理程序的事件對象會包含三個重要信息(屬性):1.data;2.origin;3.source;

示例:

//前提:www.a.com域中的頁面與位於一個內嵌框架中的www.b.com域中的頁面通信

//獲取到iframe的window
var iframeWindow = document.getElementById('myframe').contentWindow;

//向內嵌框架中發送一條消息:
iframeWindow.postMessage('A secret','http://www.a.com');

//最後一行代碼表示向內嵌框架中發送一條'A secret'的信息,並且消息的發送方所在域是 http://www.a.com

注意:使用XDM時候爲保險起見,使用postMessage()時,最好還是隻傳字符串。如果想傳入結構化的數據,最佳選擇是先在要傳入的數據上調用JSON.stringify(),通過postMessage()傳入得到的字符串,然後再在onmessage事件處理程序中調用JSON.parse().

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章