2013-02-19 148 views
1

我是新来的HTML5。我最近浏览了HTML5的基础知识,但是当我使用HTML5进行中级编码时,我想出了一个名为“HTML5 Web Workers”的东西。我用它写了一个简单的程序,但它不起作用。Web工作不工作

我的HTML5代码:

<html> 
    <head> 
     <title>HTML5 - Web Workers</title> 
    </head> 
    <body> 
     <p>Count : <output id="result"></output></p> 
     <button onclick="startWorker()">Start count</button> 
     <button onclick="endWorker()">End count</button> 

     <script> 
     var w; //the variable of object for web worker 

     function startWorker() { 
      if(typeof(Worker)!="undefined") //checking if browser supports web worker 
      { 
       if(typeof(w)=="undefined") 
       { 
        w = new Worker("counter.js"); 
       } 
       w.onmessage = function(e) 
       { 
        document.getElementById('result').innerHTML = e.data; 
       }; 
      } 
      else 
      { 
       document.getElementById('result').innerHTML = "Your browser doesnot support HTML5 Web Worker! :)"; // or display the message that web worker is not supported! 
      } 
     } 

     function endWorker() { 
      w.terminate(); 
     } 
     </script> 
    </body> 
</html> 

我的Web工作文件:

var i=0; 

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

timedCount(); 

你能告诉我,为什么它不工作?

+2

在哪里'的postMessage()'?什么不工作,你期望会发生什么?控制台中有任何错误? – JJJ 2013-02-19 09:21:04

+2

@Juhana,postMessage()是一个预定义的函数! – 2013-02-19 09:27:46

+0

好的。什么不工作,你期望会发生什么?控制台中有任何错误? – JJJ 2013-02-19 09:29:14

回答

8

您的代码为我工作得很好。您正在使用哪个浏览器以及您在错误控制台中遇到哪个错误?

如果您使用的是Chrome,并从本地文件系统正在测试(即你没有上传文件到Web服务器),那么你必须在启动浏览器时添加一个特殊的标志。您必须使用chrome --allow-file-access-from-files启动Chrome,它基本上允许您从本地文件系统上的脚本创建工作人员。但是,如果您将文件上传到网络服务器并使用这些文件进行测试 - 则不需要此标志。

+1

是的!谢谢:D我用localhost开始它,它只是工作正常:) – 2013-02-19 09:47:41