3

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

3 に答える 3

2

Web ワーカーは window.alert にアクセスできますか... Web ワーカーが dom アクセスを取得できないことはわかっています..

ワーカーで、なぜ

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

Web ワーカーを使用すると、JavaScript コードをバックグラウンドで実行できます。Web ワーカーは、alert() または confirm() 関数を呼び出すことはできません。

于 2015-05-21T14:20:25.383 に答える
0

ユーザーが [OK] をクリックするまで、アラートによって JavaScript エンジンがフリーズすることに気付きましたか。

フリーズしたくない場合は、アラートを使用しないでください。

firebug でデバッグする場合:

console.log("bla bla bla");

非ロックポップアップの場合:

その上にokボタンで隠されたdivを作ります。ポップアップを表示するタイミング。div を表示します。ユーザーが「OK」をクリックすると、それが非表示になります。

ポップアップを使用しないことをお勧めします。また、画面の後ろにいるユーザーの「ワークフロー」(ユーザーの集中を意味する)を壊します:)

于 2010-04-12T14:03:52.287 に答える