Webworker没有运行

时间:2011-06-05 14:53:15

标签: html5 web-worker

我有以下代码:

var stressWorker = new Worker("./test/webworkers/worker.js");
stressWorker.onmessage = function(event){
    alert(event.data);
};
stressWorker.onerror = function(event){
    throw new Error(event.message + " (" + event.filename + ":" + event.lineno + ")");
};

worker.js:

onmessage = function(e){
   postMessage("test");
}

该脚本找到'worker.js'文件,但实际上并没有运行它。我做错了什么?

PS。我正在使用wamp托管这两个脚本,而我正在使用chrome

3 个答案:

答案 0 :(得分:2)

worker.js在收到消息之前不会做任何事情。我无法看到你在哪里发送消息。你需要stressWorker.postMessage(...)之类的东西。

答案 1 :(得分:0)

您确定浏览器支持此特定HTML5功能吗?

This article有很多方法可以测试每项功能的支持情况。工人的测试是

return !!window.Worker;

编辑:正如我所看到的,您的代码存在问题,或者无法找到该文件。您的代码看起来很像this example,除了.js文件代码是这样的,self

self.onmessage = function(e) {  
    self.postMessage("Hello " + e.data);  
};  

你应该很容易尝试,看看它是否是这里缺少的部分。

答案 2 :(得分:0)

你应该记住的一件主要事情如果你在同一个源上运行脚本并使用chrome,你应该使用标志 - allow-file-access-from-files 启动chrome,或者你应该在本地服务器上运行应用程序。

参见代码

 var stressWorker = new Worker("../test/webworkers/worker.js");
    stressWorker.onmessage = function(event){
        alert(event.data);
    };
    stressWorker.postMessage("Hello there");
    stressWorker.onerror = function(event){
        throw new Error(event.message + " (" + event.filename + ":" + event.lineno + ")");
    };

现在您将获得工作人员的回复。 “..”我怀疑路径是错误的。