婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > HTML5中使用postMessage實(shí)現(xiàn)兩個(gè)網(wǎng)頁(yè)間傳遞數(shù)據(jù)

HTML5中使用postMessage實(shí)現(xiàn)兩個(gè)網(wǎng)頁(yè)間傳遞數(shù)據(jù)

熱門(mén)標(biāo)簽:杭州營(yíng)銷(xiāo)電銷(xiāo)機(jī)器人供應(yīng)商 電話(huà)機(jī)器人如何 飛亞外呼系統(tǒng) 聯(lián)通400電話(huà)申請(qǐng) 貸款電銷(xiāo)人工和機(jī)器人哪個(gè)好 電視購(gòu)物電銷(xiāo)外呼系統(tǒng) 西寧智能外呼系統(tǒng)加盟 高德地圖標(biāo)注賓館位置 百應(yīng)電銷(xiāo)機(jī)器人產(chǎn)業(yè)

估計(jì)很少人知道HTML5 APIS里有一個(gè)window.postMessage API。window.postMessage的功能是允許程序員跨域在兩個(gè)窗口/frames間發(fā)送數(shù)據(jù)信息。基本上,它就像是跨域的AJAX,但不是瀏覽器跟服務(wù)器之間交互,而是在兩個(gè)客戶(hù)端之間通信。讓我們來(lái)看一下window.postMessage是如何工作的。除了IE6、IE7之外的所有瀏覽器都支持這個(gè)功能。

數(shù)據(jù)發(fā)送端

首先我們要做的是創(chuàng)建通信發(fā)起端,也就是數(shù)據(jù)源”source”。作為發(fā)起端,我們可以open一個(gè)新窗口,或創(chuàng)建一個(gè)iframe,往新窗口里發(fā)送數(shù)據(jù),簡(jiǎn)單起見(jiàn),我們每6秒鐘發(fā)送一次,然后創(chuàng)建消息監(jiān)聽(tīng)器,從目標(biāo)窗口監(jiān)聽(tīng)它反饋的信息。

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. //彈出一個(gè)新窗口   
  2. var domain = 'http://scriptandstyle.com';   
  3. var myPopup = window.open(domain    
  4.             + '/windowPostMessageListener.html','myWindow');   
  5.   
  6. //周期性的發(fā)送消息   
  7. setInterval(function(){   
  8.  var message = 'Hello!  The time is: ' + (new Date().getTime());   
  9.  console.log('blog.local:  sending message:  ' + message);   
  10.         //send the message and target URI   
  11.  myPopup.postMessage(message,domain);   
  12. },6000);   
  13.   
  14. //監(jiān)聽(tīng)消息反饋   
  15. window.addEventListener('message',function(event) {   
  16.  if(event.origin !== 'http://scriptandstyle.com'return;   
  17.  console.log('received response:  ',event.data);   
  18. },false);   
  19.   

這里我使用了window.addEventListener,但在IE里這樣是不行的,因?yàn)镮E使用window.attachEvent。如果你不想判斷瀏覽器的類(lèi)型,可以使用一些工具庫(kù),比如jQuery或Dojo。

假設(shè)你的窗口正常的彈出來(lái)了,我們發(fā)送一條消息——需要指定URI(必要的話(huà)需要指定協(xié)議、主機(jī)、端口號(hào)等),消息接收方必須在這個(gè)指定的URI上。如果目標(biāo)窗口被替換了,消息將不會(huì)發(fā)出。

我們同時(shí)創(chuàng)建了一個(gè)事件監(jiān)聽(tīng)器來(lái)接收反饋信息。有一點(diǎn)極其重要,你一定要驗(yàn)證消息的來(lái)源的URI!只有在目標(biāo)方合法的情況才你才能處理它發(fā)來(lái)的消息。

如果是使用iframe,代碼應(yīng)該這樣寫(xiě):

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. //捕獲iframe   
  2. var domain = 'http://scriptandstyle.com';   
  3. var iframe = document.getElementById('myIFrame').contentWindow;   
  4.   
  5. //發(fā)送消息   
  6. setInterval(function(){   
  7.  var message = 'Hello!  The time is: ' + (new Date().getTime());   
  8.  console.log('blog.local:  sending message:  ' + message);   
  9.         //send the message and target URI   
  10.  iframe.postMessage(message,domain);    
  11. },6000);   
  12.   

確保你使用的是iframe的contentWindow屬性,而不是節(jié)點(diǎn)對(duì)象。

數(shù)據(jù)接收端

下面我們要開(kāi)發(fā)的是數(shù)據(jù)接收端的頁(yè)面。接收方窗口里有一個(gè)事件監(jiān)聽(tīng)器,監(jiān)聽(tīng)“message”事件,一樣,你也需要驗(yàn)證消息來(lái)源方的地址。消息可以來(lái)自任何地址,要確保處理的消息是來(lái)自一個(gè)可信的地址。

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. //響應(yīng)事件   
  2. window.addEventListener('message',function(event) {   
  3.  if(event.origin !== 'http://davidwalsh.name'return;   
  4.  console.log('message received:  ' + event.data,event);   
  5.  event.source.postMessage('holla back youngin!',event.origin);   
  6. },false);   
  7.   

上面的代碼片段是往消息源反饋信息,確認(rèn)消息已經(jīng)收到。下面是幾個(gè)比較重要的事件屬性:

source – 消息源,消息的發(fā)送窗口/iframe。
origin – 消息源的URI(可能包含協(xié)議、域名和端口),用來(lái)驗(yàn)證數(shù)據(jù)源。
data – 發(fā)送方發(fā)送給接收方的數(shù)據(jù)。

這三個(gè)屬性是消息傳輸中必須用到的數(shù)據(jù)。

使用window.postMessage

跟其他很web技術(shù)一樣,如果你不校驗(yàn)數(shù)據(jù)源的合法性,那使用這種技術(shù)將會(huì)變得很危險(xiǎn);你的應(yīng)用的安全需要你對(duì)它負(fù)責(zé)。window.postMessage就像是PHP相對(duì)于JavaScript技術(shù)。window.postMessage很酷,不是嗎?

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:煙臺(tái) 撫州 內(nèi)蒙古 玉溪 牡丹江 晉中 安慶 邯鄲

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5中使用postMessage實(shí)現(xiàn)兩個(gè)網(wǎng)頁(yè)間傳遞數(shù)據(jù)》,本文關(guān)鍵詞  HTML5,中,使用,postMessage,實(shí)現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5中使用postMessage實(shí)現(xiàn)兩個(gè)網(wǎng)頁(yè)間傳遞數(shù)據(jù)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于HTML5中使用postMessage實(shí)現(xiàn)兩個(gè)網(wǎng)頁(yè)間傳遞數(shù)據(jù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 合川市| 新宁县| 保靖县| 永清县| 雷州市| 中宁县| 肇东市| 剑阁县| 阿城市| 阿克苏市| 鹿邑县| 肥东县| 阜南县| 来凤县| 当阳市| 恩平市| 布尔津县| 濉溪县| 成安县| 胶南市| 建水县| 九台市| 鹰潭市| 砀山县| 蒙山县| 南安市| 贵港市| 栾川县| 隆德县| 枣庄市| 鄂州市| 江津市| 绥化市| 施秉县| 常熟市| 钟山县| 边坝县| 通化县| 秦皇岛市| 湘潭县| 丰台区|