window.alert в рабочем потоке - PullRequest
2 голосов
/ 12 апреля 2010

Если я положу 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");
}

Ответы [ 3 ]

2 голосов
/ 27 мая 2010

имеет ли веб-работник доступ к window.alert ... я знаю, что веб-работники не имеют доступа к домену ..

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

if (window && window.alert) {
   // do your normal thing
}
else {
   postMessage("no support for this");
}
0 голосов
/ 21 мая 2015

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

0 голосов
/ 12 апреля 2010

Заметили ли вы, что предупреждение останавливает движок JavaScript, пока пользователь не нажмет OK.

Если вы не хотите, чтобы он завис, не используйте оповещения.

Для отладки с помощью firebug:

console.log("bla bla bla");

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

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

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

...