网站建设知识

HTML5的后台英雄Web Workers

发布: | 发布时间:2013-02-28 11:59

什么是 Web Worker?

  当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。   web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。     浏览器支持   所有主流浏览器均支持 web worker,除了 Internet Explorer。   HTML5 Web Workers 实例 检测 Web Worker 支持   在创建 web worker 之前,请检测用户的浏览器是否支持它:   [html]  if(typeof(Worker)!=="undefined")     {     // Yes! Web worker support!     // Some code.....     }   else     {     // Sorry! No Web Worker support..     }     if(typeof(Worker)!=="undefined")   {   // Yes! Web worker support!   // Some code.....   } else   {   // Sorry! No Web Worker support..   }创建 web worker 文件 现在,让我们在一个外部 JavaScript 中创建我们的 web worker。   在这里,我们创建了计数脚本。该脚本存储于 "demo_workers.js" 文件中:   [html]  var i=0;      function timedCount()   {   i=i+1;   postMessage(i);   setTimeout("timedCount()",500);   }      timedCount();     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" 中的代码:   [html]  if(typeof(w)=="undefined")     {     w=new Worker("demo_workers.js");     }     if(typeof(w)=="undefined")   {   w=new Worker("demo_workers.js");   } 然后我们就可以从 web worker 发生和接收消息了。   向 web worker 添加一个 "onmessage" 事件监听器:   [html]  w.onmessage=function(event){   document.getElementById("result").innerHTML=event.data;   };     w.onmessage=function(event){ document.getElementById("result").innerHTML=event.data; }; 当 web worker 传递消息时,会执行事件监听器中的代码。event.data 中存有来自 event.data 的数据。 终止 Web Worker   当我们创建 web worker 对象后,它会继续监听消息(即使在外部脚本完成之后)直到其被终止为止。   如需终止 web worker,并释放浏览器/计算机资源,请使用 terminate() 方法:   [html]  w.terminate();     w.terminate();完整的 Web Worker 实例代码 我们已经看到了 demo_workers.js 文件中的 Worker 代码。下面是 HTML 页面的代码:   [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>  
万唯科技作为唐山地区专业的网络服务提供商,已经为上百家企事业单位提供了网站建设网站制作、网站改版、域名注册、网站空间租用等服务,优质的服务得到了广大客户的一致认可,如果您有网站建设、网站改版、网站维护等方面的需求,请致电:0315-6723159,我们会根据您所从事的行业领域和网站类型,在最短的时间内请我们的营销顾问与您预约后上门拜访您,直接面谈交流为您解答所有的网站建设疑问。

网站建设知识

网站建设| 案例展示| 网站推广| 服务项目| 关于我们| 联系我们| 建站知识| 唐山网络公司博客
  • 热线电话: 0315-6723159
  • 传真:0315-6723159 邮箱:449324@qq.com
  • 公司地址:丰南区瑞景街18号金融中心3层
  • 乘车路线:乘坐80、88、89路车到“欣荣街市场(银丰市场)”站,即到。北方电子对面。
万唯科技最值得信赖的品牌-万唯网络品牌网站建设专家
Copyright © 2012-2013 0315www.com. 万唯科技 版权所有  ICP备案号:冀ICP备12021829号