<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    HTML 5 Web Workers

    web worker 是運行在后臺的 JavaScript,不會影響頁面的性能。

    什么是 Web Worker?

    當在 HTML 頁面中執行腳本時,頁面的狀態是不可響應的,直到腳本已完成。

    web worker 是運行在后臺的 JavaScript,獨立于其他腳本,不會影響頁面的性能。您可以繼續做任何愿意做的事情:點擊、選取內容等等,而此時 web worker 在后臺運行。

    瀏覽器支持

    所有主流瀏覽器均支持 web worker,除了 Internet Explorer。

    HTML5 Web Workers 實例

    下面的例子創建了一個簡單的 web worker,在后臺計數:

    計數:

     

    親自試一試

    檢測 Web Worker 支持

    在創建 web worker 之前,請檢測用戶的瀏覽器是否支持它:

    if(typeof(Worker)!=="undefined")   {   // Yes! Web worker support!   // Some code.....   } else   {   // Sorry! No Web Worker support..   } 

    創建 web worker 文件

    現在,讓我們在一個外部 JavaScript 中創建我們的 web worker。

    在這里,我們創建了計數腳本。該腳本存儲于 "demo_workers.js" 文件中:

    var i=0;  function timedCount() { i=i+1; postMessage(i); setTimeout("timedCount()",500); }  timedCount(); 

    以上代碼中重要的部分是 postMessage() 方法 - 它用于向 HTML 頁面傳回一段消息。

    注釋:web worker 通常不用于如此簡單的腳本,而是用于更耗費 CPU 資源的任務。

    創建 Web Worker 對象

    我們已經有了 web worker 文件,現在我們需要從 HTML 頁面調用它。

    下面的代碼檢測是否存在 worker,如果不存在,- 它會創建一個新的 web worker 對象,然后運行 "demo_workers.js" 中的代碼:

    if(typeof(w)=="undefined")   {   w=new Worker("demo_workers.js");   } 

    然后我們就可以從 web worker 發生和接收消息了。

    向 web worker 添加一個 "onmessage" 事件監聽器:

    w.onmessage=function(event){ document.getElementById("result").innerHTML=event.data; }; 

    當 web worker 傳遞消息時,會執行事件監聽器中的代碼。event.data 中存有來自 event.data 的數據。

    終止 Web Worker

    當我們創建 web worker 對象后,它會繼續監聽消息(即使在外部腳本完成之后)直到其被終止為止。

    如需終止 web worker,并釋放瀏覽器/計算機資源,請使用 terminate() 方法:

    w.terminate();

    完整的 Web Worker 實例代碼

    我們已經看到了 .js 文件中的 Worker 代碼。下面是 HTML 頁面的代碼:

    實例

    <!DOCTYPE html> <html> <body>  <p>Count numbers: <output id="result"></output></p> <button onclick="startWorker()">Start Worker</button> <button onclick="stopWorker()">Stop Worker</button> <br /><br />  <script> var w;  function startWorker() { if(typeof(Worker)!=="undefined") {   if(typeof(w)=="undefined")     {     w=new Worker("demo_workers.js");     }   w.onmessage = function (event) {     document.getElementById("result").innerHTML=event.data;   }; } else { document.getElementById("result").innerHTML="Sorry, your browser  does not support Web Workers..."; } }  function stopWorker() { w.terminate(); } </script>  </body> </html> 

    親自試一試

    Web Workers 和 DOM

    由于 web worker 位于外部文件中,它們無法訪問下例 JavaScript 對象:

    • window 對象
    • document 對象
    • parent 對象

    posted on 2014-04-10 16:01 順其自然EVO 閱讀(196) 評論(0)  編輯  收藏 所屬分類: HTML5

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 日韩电影免费在线观看网站| 国产午夜亚洲精品理论片不卡| 97在线视频免费公开视频| 亚洲香蕉在线观看| 亚洲精品白浆高清久久久久久| 国产精品美女自在线观看免费| 24小时在线免费视频| 国产A∨免费精品视频| 亚洲AV无码一区二区大桥未久| 亚洲经典在线中文字幕| 亚洲女同成av人片在线观看| 亚洲AV成人潮喷综合网| 国产午夜鲁丝片AV无码免费| www.999精品视频观看免费| 婷婷综合缴情亚洲狠狠尤物| 永久免费毛片在线播放| 亚洲无砖砖区免费| 免费视频成人片在线观看| 99久久成人国产精品免费| jizz中国免费| 国产精品内射视频免费| 九九综合VA免费看| 少妇亚洲免费精品| 四虎影视永久在线精品免费| 国产亚洲视频在线播放大全| 亚洲欧美日韩中文无线码 | 亚洲国产精品一区二区成人片国内| 亚洲阿v天堂在线2017免费| 国产yw855.c免费视频| 国产成人精品免费视频软件| 日韩精品视频免费观看| 日韩免费视频观看| 国产免费黄色大片| 又粗又硬又黄又爽的免费视频| 免费jjzz在线播放国产| 亚洲国产精品自在拍在线播放| 亚洲不卡AV影片在线播放| 亚洲第一页日韩专区| 国产亚洲美女精品久久久| 亚洲精品中文字幕无码蜜桃| 亚洲成AV人在线播放无码|