1.跨文檔消息傳送(XDM),指的是在來自不同域的頁面間傳遞消息。
2.XDM的核心是postMessage()方法。對于XDM而言,『另一個地方』指的是包含在當前頁面中的iframe元素,或者由當前頁面彈出的窗口。postMessage()方法接收兩個參數(shù):一條消息和一個表示消息接收方來自哪個域的字符串。第二個參數(shù)對保障安全通信非常重要,可以防止瀏覽器把消息發(fā)送到不安全的地方。**調(diào)用這個方法的對象是接收信息方。**
~~~
//注意:所有支持XDM的瀏覽器也支持iframe的contentWindow屬性,這個屬性獲得該iframe的window對象
var iframeWindow = document.getElementById('myframe').contentWindow;
iframeWindow.postMessage('A secret','http://www.wrow.com');
~~~
3.接收到XDM消息是,會觸發(fā)window對象的message事件。觸發(fā)message事件后,傳遞給onmessage處理程序的事件對象包含以下三方面的重要信息:
(1)data:作為postMessage()第一個參數(shù)傳入的字符串數(shù)據(jù)。
(2)origin:發(fā)送消息的文檔所在的域(在本例中是"'http://www.wrow.com")。
(2)source:發(fā)送消息的文檔的window對象的代理。這個代理對象主要用于在發(fā)送上一條消息的窗口上代用postMessage()方法。注意event.source只是代理,不能通過這個代理訪問window對象的其他任何信息。
4.html5規(guī)范中提到postMessage()的第一個參數(shù)可以是JavaScript的任意基本類型或可復(fù)制的對象,然而并不是所有瀏覽器都做到了這點兒,部分瀏覽器只能處理字符串參數(shù),所以我們在傳遞參數(shù)的時候需要使用JSON.stringify()方法對對象參數(shù)序列化。
5.通過haschange事件,可以知道URL的參數(shù)什么時候發(fā)生了變化,即什么時候該有所反應(yīng)。而通過狀態(tài)管理API,能夠在不加載新頁面的情況下改變?yōu)g覽器的URL。為此需要使用history.pushState()方法,該方法可以接收3個參數(shù):狀態(tài)對象、新狀態(tài)的標題和可選的相對URL。
- 第一章 JavaScript簡介
- 第二章 在HTML中使用JavaScript
- 第三章 基本概念
- 第四章 變量、作用域和內(nèi)存問題
- 第五章 引用類型
- 第六章 面向?qū)ο蟮某绦蛟O(shè)計
- 第七章 函數(shù)表達式
- 第八章 BOM
- 第九章 客戶端檢測
- 第十章 DOM
- 第十一章 DOM擴展
- 第十二章 DOM2和DOM3
- 第十三章 事件
- 第十四章 表單腳本
- 第十六章 HTML5腳本程序
- 第十七章 錯誤處理與調(diào)試
- 第二十章 JSON
- 第二十一章 AJAX和Comet
- 第二十二章 高級技巧
- 第二十三章 離線應(yīng)用與客戶端存儲
- 第二十四章 最佳實踐
- 第二十五章 新興的API
