好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > HTML5中的postMessage API基本使用教程

HTML5中的postMessage API基本使用教程

熱門標簽:中紳電銷智能機器人 農村住宅地圖標注 漳州人工外呼系統排名 鶴壁手機自動外呼系統怎么安裝 ai電銷機器人連接網關 跟電銷機器人做同事 威海營銷外呼系統招商 濟南辦理400電話 鄭州電銷外呼系統違法嗎

關于postMessage

window.postMessage雖然說是html5的功能,但是支持IE8+,假如你的網站不需要支持IE6和IE7,那么可以使用window.postMessage。關于window.postMessage,很多朋友說他可以支持跨域,不錯,window.postMessage是客戶端和客戶端直接的數據傳遞,既可以跨域傳遞,也可以同域傳遞。

應用場景

我只是簡單的舉一個應用場景,當然,這個功能很多地方可以使用。

假如你有一個頁面,頁面中拿到部分用戶信息,點擊進入另外一個頁面,另外的頁面默認是取不到用戶信息的,你可以通過window.postMessage把部分用戶信息傳到這個頁面中。(當然,你要考慮安全性等方面。)

代碼舉例

發送信息:

JavaScript Code復制內容到剪貼板
  1. //彈出一個新窗口   
  2. var domain = 'http://haorooms.com';   
  3. var myPopup = window.open(domain    
  4.             + '/windowPostMessageListener.html','myWindow');   
  5.   
  6. //周期性的發送消息   
  7. setTimeout(function(){   
  8.     //var message = '當前時間是 ' + (new Date().getTime());    
  9.         var message = {name:"站點",sex:"男"}; //你在這里也可以傳遞一些數據,obj等   
  10.     console.log('傳遞的數據是  ' + message);   
  11.     myPopup.postMessage(message,domain);   
  12. },1000);  

要延遲一下,我們一般用計時器setTimeout延遲再發用。

接受的頁面

JavaScript Code復制內容到剪貼板
  1. //監聽消息反饋   
  2. window.addEventListener('message',function(event) {   
  3.     if(event.origin !== 'http://haorooms.com'return; //這個判斷一下是不是我這個域名跳轉過來的   
  4.     console.log('received response:  ',event.data);   
  5. },false);  

如下圖,接受頁面得到數據

如果是使用iframe,代碼應該這樣寫:

JavaScript Code復制內容到剪貼板
  1. //捕獲iframe   
  2. var domain = 'http://haorooms.com';   
  3. var iframe = document.getElementById('myIFrame').contentWindow;   
  4.   
  5. //發送消息   
  6. setTimeout(function(){   
  7.     //var message = '當前時間是 ' + (new Date().getTime());    
  8.         var message = {name:"站點",sex:"男"}; //你在這里也可以傳遞一些數據,obj等   
  9.     console.log('傳遞的數據是:  ' + message);   
  10.         //send the message and target URI   
  11.     iframe.postMessage(message,domain);    
  12. },1000);  

接受數據

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

上面的代碼片段是往消息源反饋信息,確認消息已經收到。下面是幾個比較重要的事件屬性:

source – 消息源,消息的發送窗口/iframe。
origin – 消息源的URI(可能包含協議、域名和端口),用來驗證數據源。
data – 發送方發送給接收方的數據。

調用實例
1. 主線程中創建 Worker 實例,并監聽 onmessage 事件

JavaScript Code復制內容到剪貼板
  1. <html>    
  2. <head>    
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">    
  4. <title>Test Web worker</title>    
  5. <script type="text/JavaScript">    
  6.  function init(){    
  7.   var worker = new Worker('compute.js');    
  8.   //event 參數中有 data 屬性,就是子線程中返回的結果數據   
  9.   worker.onmessage= function (event) {    
  10.    // 把子線程返回的結果添加到 div 上   
  11.    document.getElementById("result").innerHTML +=    
  12.       event.data+"<br/>";    
  13.   };    
  14.  }    
  15. </script>    
  16. </head>    
  17. <body onload="init()">    
  18. <div id="result"></div>    
  19. </body>    
  20. </html>  

在客戶端的 compute.js 中,只是簡單的重復多次加和操作,最后通過 postMessage 方法把結果返回給主線程,目的就是等待一段時間。而在這段時間內,主線程不應該被阻塞,用戶可以通過拖拽瀏覽器,變大縮小瀏覽器窗口等操作測試這一現象。這個非阻塞主線程的結果就是 Web Workers 想達到的目的。

2. compute.js 中調用 postMessage 方法返回計算結果

JavaScript Code復制內容到剪貼板
  1. var i=0;    
  2.   
  3. function timedCount(){    
  4.  for(var j=0,sum=0;j<100;j++){    
  5.   for(var i=0;i<100000000;i++){    
  6.    sum+=i;    
  7.   }    
  8.  }    
  9.  // 調用 postMessage 向主線程發送消息   
  10.  postMessage(sum);    
  11. }    
  12.   
  13. postMessage("Before computing,"+new Date());    
  14. timedCount();    
  15. postMessage("After computing,"+new Date());  

標簽:咸陽 紅河 惠州 營口 文山 蘇州 萍鄉 甘南

巨人網絡通訊聲明:本文標題《HTML5中的postMessage API基本使用教程》,本文關鍵詞  HTML5,中的,postMessage,API,基本,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《HTML5中的postMessage API基本使用教程》相關的同類信息!
  • 本頁收集關于HTML5中的postMessage API基本使用教程的相關信息資訊供網民參考!
  • 推薦文章