2011-06-05 77 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 + ")"); 
    }; 

現在你會得到工人的響應。 「..」我懷疑路徑是錯誤的。