2010-04-12 76 views
1

如果我把一個window.alert一個webworker客戶端上,然後將背景工人停止工作。 這是爲什麼呢?window.alert工作線程

即 來電者:

var worker = new Worker("worker.js"); 
// Watch for messages from the worker 
worker.onmessage = function(e){ 
    // The message from the client: 
    e.data 
}; 
worker.postMessage("start"); 

客戶端(worker.js)

onmessage = function(e){ 
    if (e.data === "start") { 
    // Do some computation 
    done() 
    } 
}; 

function done(){ 
    alert('don'); // ===> This kills the worker. 
    // Send back the results to the parent page 
    postMessage("done"); 
} 

回答

0

有你已經注意到警報凍結JavaScript引擎,直到用戶點擊確定。

如果你不希望它凍結不使用警報。

對於螢火蟲調試運行:

console.log("bla bla bla"); 

對於非鎖定彈出窗口:

使與它確定]按鈕的隱藏的股利。彈出窗口顯示時。讓div可見。當用戶點擊「確定」時隱藏它。

我勸你不要使用彈出窗口。這也打破了屏幕:)

+0

工作者線程不能使用的console.log – jas7 2013-11-19 22:54:41

+0

@控制檯jas7專用工人(已經)使用,共享的工人不能。 – maja 2014-08-24 16:58:41

2

做的網絡工作者有機會獲得window.alert背後的用戶的「工作流程」(意爲用戶的濃度)...我知道網絡工作者沒有得到訪問DOM ..

在工人

,爲什麼不做一個

if (window && window.alert) { 
    // do your normal thing 
} 
else { 
    postMessage("no support for this"); 
} 
+0

Web工作人員不能調用alert()。 – 2018-02-09 00:48:43

0

的Web Workers允許你在後臺運行JavaScript代碼。 Web工作人員不能調用alert()或confirm()函數。