HTML5与CSS3权威指南.pdf5
第9章 通信API
跨文檔消息傳輸
HTML5提供了網頁文檔之間互相接收與發送信息的功能,不僅同源(域+端口號)的Web網頁之間可以互相通信,甚至可以實現跨域通信
想要接受從其他窗口發過來的信息,要對窗口對象的message事件進行監視
window.addEventListener("message",function(){...},false);
使用window對象的postMessage方法向其他窗口發送消息
otherWindow.postMessage(message,targetOrigin);
第一個參數為所發送的消息文本,也可以是任何的Javascript對象(通過JSON轉換對象為文本);第二個參數為接受消息的對象窗口的URL地址(例如http://localhost:8080/),可以使用通配符“*”指定全部地址。otherWindow為要發送窗口對象的引用,可以通過window.open返回該對象,或通過對window.frames數組指定序號返回單個frame所屬的窗口對象
1)通過訪問message事件的origin屬性,可以獲取消息的發送源(發送源與網站的URL地址不是同一概念,發送源只包括域名與端口號,最好檢查發送源)
2)message事件的data屬性,可以獲取消息內容(可以是任何Javascript對象)
3)postMessage方法發送消息
4)通過訪問message事件的source屬性,可以獲取消息發送源的窗口對象(準確的說是窗口的代理對象)
JSON對象的stringify方法將Javascript對象轉換成文本,使用parse方法將文本還原為Javascript對象,任何Javascript對象可以通過這種方式在網頁文檔、端口、域之間傳遞消息
Web Sockets通信
Web Sockets是HTML5提供的在應用程序中客戶端與服務器端之間進行的非HTTP通信機制,它實現了用HTTP不容易實現的服務器端的數據推送等智能通信技術
建立一個非HTTP的雙向連接(實時永久,除非被顯式關閉),客戶端只要有一個被打開的套接字與服務器建立了連接,服務器就可以把數據推送過來,從被動到主動
使用Web Socket API
將URL字符串作為參數,然后調用構造器
var webSocket=new WebSocket("ws://localhost:8005/socket");
URL字符串必須以“ws”、“wss(加密通信時)”文字作為開頭,javascript腳本中可以通過訪問WebSocket對象的url屬性來重新獲取,使用WebSocket對象的send方法對服務器發送數據
webSocket.send("data");
通過獲取onmessage事件句柄來接收服務器傳過來的數據
webSocket.onmessage=function(event){
var data=event.data;
...
}
通過獲取onopen事件句柄來監聽socket的打開事件
webSocket.onopen=function(event){
//開始通信時的處理
};
獲取onclose事件句柄來監聽socket的關閉事件
webSocket.onclose=function(event){
//通信結束時的處理
};
通過使用close方法來關閉socket,切斷通信連接
webSocket.close();
另外還可以通過讀取readyState屬性值來獲取WebSocket對象的狀態
CONNECTING(數字為0)表示正在連接 OPEN(數字為1)表示正在建立連接 CLOSING(數字為2)表示正在關閉連接 CLOSED(數字為2)表示已關閉連接
第10章 使用Web Workers處理線程
var worker=new Worker("worker.js");
需要注意的是,后臺線程中不能訪問頁面或窗口對象,如果使用到則會引發錯誤
在后臺線程中接收消息
worker.onmessage=function(event){
//處理接收到的消息
}
對后臺線程發送消息
work.postMessage(message); //文本數據
線程嵌套:線程中可以嵌套子線程,把一個較大的后臺線程切成幾個子線程,在每個子線程中完成相對獨立的一部分
在多個子線程中進行數據的交互,步驟如下
1)先創建發送數據的子線程
2)子線程執行任務,再傳給主線程
3)再創建一個子線程,將主線程中的數據傳給新的子線程
4)新的子線程執行代碼
線程中可用的變量、函數與類
self:本線程范圍內的作用域
postMessage(message):向創建的源窗口發送信息
onmessage:接收消息的事件句柄
importScript(urls):導入其他Javascript腳本文件,可以是多個,導入的文件與使用該線程文件的頁面必須是同一個域、同一個端口中
importScripts('script1.js','scripts\script2.js');
navigator對象:與window.navigator對象類似
sessionStorage/localStorage:可以在線程中使用WebStorage
XMLHttpRequest:可以在線程中使用Ajax請求
Web Workers:可以在線程中嵌套線程
setTimeout()/setInterval():線程中實現定時處理
close:結束本線程
eval()、isNan()等:可以使用Javascript核心函數
object:可以創建和使用本地對象
WebSockets:可以使用WebSocketsAPI向服務器發送和接收信息
轉載于:https://www.cnblogs.com/sdgjytu/p/3902747.html
總結
以上是生活随笔為你收集整理的HTML5与CSS3权威指南.pdf5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocos2dx scrollview和
- 下一篇: 前端开发总览