3

如果我将 window.alert 放在 webworker 客户端上,那么后台工作人员将停止工作。为什么会这样?

即调用者:

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

3 回答 3

2

网络工作者是否可以访问 window.alert...我知道网络工作者没有 dom 访问权限...

在工人中,为什么不做一个

if (window && window.alert) {
   // do your normal thing
}
else {
   postMessage("no support for this");
}
于 2010-05-27T00:31:15.633 回答
0

您是否注意到警报会冻结 javascript 引擎,直到用户单击确定。

如果您不希望它冻结,请不要使用警报。

使用 firebug 进行调试:

console.log("bla bla bla");

对于非锁定弹出窗口:

制作一个带有确定按钮的隐藏 div。何时显示弹出窗口。让 div 可见。当用户单击“确定”时隐藏它。

我建议你不要使用弹出窗口。也打破了屏幕后面用户的“工作流程”(意思是用户的注意力):)

于 2010-04-12T14:03:52.287 回答
0

Web Workers 允许您在后台运行 JavaScript 代码。Web Worker 不能调用 alert() 或 confirm() 函数。

于 2015-05-21T14:20:25.383 回答