Вопрос

Если я поставлю окно. Алерт на клиент 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");

Клиент (Working.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");
}
Это было полезно?

Решение

Вы заметили оповещение замораживает двигатель JavaScript, пока пользователь нажимает пользователя.

Если вы не хотите, чтобы это заморозить, не используйте предупреждения.

Для отладки с Firebug:

console.log("bla bla bla");

Для не блокировки всплывающих окон:

Сделайте скрытый div с кнопкой OK на нем. Когда всплывающее окно будет показано. Поместите ведро видимы. Когда пользователь нажимает «ОК», скрыть его.

Я бы посоветовал вам не использовать всплывающие окна. Это также нарушает «рабочий поток» (что означает концентрацию пользователя) пользователя за экраном :)

Другие советы

Есть ли у веб-работника доступ к Window.Alert ... Я знаю, что веб-работники не получают доступа DOM ..

на работнике, почему бы не сделать

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

Веб-работники позволяют запустить код JavaScript на заднем плане. Веб-работники не могут вызвать предупреждение () или подтверждать () функции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top