2011-06-05 74 views
1

我有以下代码:Webworker没有运行

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

回答

0

您确定您的浏览器支持这个特定的HTML5功能吗?

This article有许多方法来测试每个功能的支持。对于工人的测试是

return !!window.Worker; 

编辑:在我看来,有两种与您的代码有问题或无法找到该文件。您的代码看起来很像this example,除了那里的js文件的代码是这样的,用self

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

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

+0

是的,我正在使用铬和代码片段返回true。 – fogy 2011-06-05 15:02:54

2

worker.js在接收到消息之前不会执行任何操作。我看不到你在哪里发送消息。你需要某个地方像stressWorker.postMessage(...)

+0

当然,就是这样! – DOK 2011-06-05 16:36:36

0

一个主要的事情你应该记住,如果你正在运行在相同的原始脚本,并使用Chrome,你应该用标志启动的铬--allow-文件访问从档案或您应该运行的应用程序本地服务器

看到代码

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 + ")"); 
    }; 

现在你会得到工人的响应。 “..”我怀疑路径是错误的。