一、跨文檔消息傳輸
要想接受從其餘的窗口那裏發過來的消息,就必須對窗口對象的message事件進行監視。
window.addEventListener("message",function(ev){...},false);
ev.orgin:獲取消息的發送源;
ev.data:消息內容;
ev.source:獲取消息發送源的窗口對象。
使用window對象的postMessage方法向其餘窗口發送消息。
otherWindow.postMessage(message,targerOrigin);
二、Web Sockets通訊
HTML5提供的在Web應用程序中客戶端與服務器端之間進行的非HTTP的通訊機制。
構建鏈接:var webSocket=new WebSocker("ws://localhost:8081/socket");//URL必須以ws或者wssk開頭。
發送消息:webSocket.send("data");
接收服務器消息:
webSocket.onmessage=function(event){
var data=event.data;
}
監聽socket打開和關閉事件:
websocket.onopen=function(event){...}
websocket.onclose=function(event){...}
關閉socket:webSocket.close();
readyState屬性只能夠獲取WebSocket對象的狀態。
三、使用Web Workers處理線程
建立後臺線程:var worker=new Worker("worker.js");//參數爲後臺線程執行的URL
後臺線程不能訪問頁面或窗口對象。
在後臺線程之中接收消息:worker.onmessage=function(event){/*處理收到的消息*/}
對後臺線程發送消息:worker.postMessage(message);java
在後臺線程中,也能夠獲取worker對象的onmessage事件句柄和postMessage方法在後臺進行消息的發送和接收。web
與線程進行數據交互:獲取數據後動態建立頁面元素。
線程嵌套:
單層嵌套:在後臺線程中再建立線程。
向主頁面線程發送消息用的是postMessage,而向子線程用worker.postMessage。
在多個子線程中進行數據的交互:
線程中可用的變量、函數與類:
self,postMessage(message),onmessage,importScript(urls),nacigator對象,sessionStore/localStore,XMLHttpRequest,Web Workers,setTimeout(),setInterval(),close,eval(),isNan(),escape()等javaScript核心函數,object,WebSorckets.服務器