成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript HTML5腳本編程——“跨文檔消息傳遞”的注意要點(diǎn)

TerryCai / 1208人閱讀

摘要:跨文檔消息傳送,有時(shí)候也簡稱為,指的是來自不同域的頁面間傳遞消息。接收到消息時(shí),會(huì)觸發(fā)對(duì)象的事件。接受到消息后驗(yàn)證發(fā)送窗口的來源是至關(guān)重要的。基本的檢測(cè)模式如下。

跨文檔消息傳送(cross-document messaging),有時(shí)候也簡稱為XDM,指的是來自不同域的頁面間傳遞消息。例如,www.wrox.com域中的一個(gè)頁面與一個(gè)位于內(nèi)嵌框架中的p2p.wrox.com域中的頁面通信。

XDM的核心是

postMessage()方法。在HTML5規(guī)范中,除了XDM部分之外的其它部分也會(huì)提到這個(gè)方法名,但都是為了同一個(gè)目的:向另一個(gè)地方傳遞數(shù)據(jù)。對(duì)于XDM而言,“另一個(gè)地方”指的是包含在當(dāng)前頁面中的iframe元素,或者由當(dāng)前頁面彈出的窗口。

postMessage()方法接收兩個(gè)參數(shù):一條消息和一個(gè)表示消息接收方來自哪個(gè)域的字符串。

第二個(gè)參數(shù)對(duì)保障安全通信非常重要,可以防止瀏覽器把消息發(fā)送到不安全的地方。來看下面的例子。

var iframWindow = document.getElementById("myframe").contentWindow;
iframWindow.postMessage("A secret", "http://www.w3cmm.com");

接收到XDM消息時(shí),會(huì)觸發(fā)window對(duì)象的message事件。這個(gè)事件是以異步形式觸發(fā)的,因此從發(fā)送消息到接受消息(觸發(fā)接受窗口的message事件)可能要經(jīng)過一段時(shí)間的延遲。觸發(fā)message事件后,傳遞給

onmessage處理程序的事件對(duì)象

包含以下三方面的重要信息:

data:作為postMessage()第一個(gè)參數(shù)傳入的字符串?dāng)?shù)據(jù)。

origin:發(fā)送消息的文檔所在的域,例如“http://www.w3cmm.com”。

source:發(fā)送消息的文檔的window對(duì)象的代理。這個(gè)代理對(duì)象主要用于在發(fā)送上一條消息的窗口中調(diào)用postMessage()方法。如果發(fā)送消息的窗口來自同一個(gè)域,那這個(gè)對(duì)象就是window。

接受到消息后驗(yàn)證發(fā)送窗口的來源是至關(guān)重要的?;镜臋z測(cè)模式如下。

EventUtil.addHandler(window, "message", function (event) {
    //確保發(fā)送消息的域是已知的域
    if (event.origin == "http://www.w3cmm.com") {
        //處理接收到的數(shù)據(jù)
        processMessage(event.data);
        //可選:向來源窗口發(fā)送回執(zhí)
        event.source.postMessage("Received!", "http://p2p.w3cmm.com");
    }
});

還是要提醒大家,event.source大多數(shù)情況下只是window對(duì)象的代理,并非實(shí)際的window對(duì)象。不能通過這個(gè)代理對(duì)象訪問window對(duì)象的其它任何信息。使用postMessage()時(shí),最好還是只傳字符串。最佳選擇是先在要傳入的數(shù)據(jù)上調(diào)用JSON.stringify(),通過postMessage()傳入得到的字符串,然后再在onmessage事件處理程序中調(diào)用JSON.parse()

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78633.html

相關(guān)文章

  • 《同源策略》簡單介紹

    摘要:概述同源策略是對(duì)代碼能夠操作哪些內(nèi)容的一條完整的安全限制,也是由提出的一個(gè)著名的安全策略。同源策略的目的同源政策的目的,是為了保證用戶信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。 [TOC] 1、概述 同源策略是對(duì)JavaScript代碼能夠操作哪些WEB內(nèi)容的一條完整的安全限制,也是由Netscape提出的一個(gè)著名的安全策略。所謂同源簡單來說就是三個(gè)相同,**1、域名相同2、協(xié)議相同3、端口...

    gggggggbong 評(píng)論0 收藏0
  • 《同源策略》簡單介紹

    摘要:概述同源策略是對(duì)代碼能夠操作哪些內(nèi)容的一條完整的安全限制,也是由提出的一個(gè)著名的安全策略。同源策略的目的同源政策的目的,是為了保證用戶信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。 [TOC] 1、概述 同源策略是對(duì)JavaScript代碼能夠操作哪些WEB內(nèi)容的一條完整的安全限制,也是由Netscape提出的一個(gè)著名的安全策略。所謂同源簡單來說就是三個(gè)相同,**1、域名相同2、協(xié)議相同3、端口...

    vpants 評(píng)論0 收藏0
  • htm5新特性(轉(zhuǎn))

    摘要:轉(zhuǎn)自今天來談?wù)勄岸嗣嬖囍谢旧厦看我幻娑紩?huì)被問到的一個(gè)問題,那就是的新特性了。元素,表示生成密匙。和通過設(shè)置和特性,可以將輸入框的數(shù)值輸入范圍限定在最低值和最高值之間。一旦為某輸入型控件設(shè)置了特性,那么此項(xiàng)必填,否則無法提交表單。 轉(zhuǎn)自:http://hyuhan.com/2017/07/06/... 今天來談?wù)勄岸嗣嬖囍谢旧厦看我幻娑紩?huì)被問到的一個(gè)問題,那就是html5的新特性了。...

    focusj 評(píng)論0 收藏0
  • 高程3總結(jié)#第16章HTML5腳本編程

    摘要:腳本編程跨文檔消息傳遞跨文檔消息傳送,簡稱為,指的是來自不同域的頁面間傳遞消息的核心是方法,在規(guī)范中,除了部分之外的其他部分也會(huì)提到這個(gè)方法名,但都是為了同一個(gè)目的,向另一個(gè)地方傳遞參數(shù)。第一個(gè)頁面加載時(shí)為空 HTML5腳本編程 跨文檔消息傳遞 跨文檔消息傳送,簡稱為XMD,指的是來自不同域的頁面間傳遞消息 XMD的核心是postMessage()方法,在HTML5規(guī)范中,除了XDM...

    silvertheo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<