如果我在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 :(得分:2)
网络工作者是否可以访问window.alert ...我知道网络工作者无法访问dom ..
在工人中,为什么不做一个
if (window && window.alert) {
// do your normal thing
}
else {
postMessage("no support for this");
}
答案 1 :(得分:0)
您是否注意到警报会冻结javascript引擎,直到用户点击“确定”。
如果您不希望它冻结,请不要使用警报。
使用萤火虫进行调配:
console.log("bla bla bla");
对于非锁定弹出窗口:
制作一个隐藏的div,上面有一个ok按钮。当要显示弹出窗口时。把div看得见。当用户点击“确定”时隐藏它。
我建议你不要使用弹出窗口。它还打破了屏幕后面用户的“工作流程”(意味着用户的注意力):)
答案 2 :(得分:0)
Web Workers允许您在后台运行JavaScript代码。 Web工作者无法调用alert()或confirm()函数。