Window.alert no tópico de trabalhador
-
26-09-2019 - |
Pergunta
Se eu colocar uma janela. Porque isto é assim?
ou seja, o chamador:
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");
O cliente (trabalhador.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");
}
Solução
Você notou que o alerta congela o mecanismo JavaScript até que o usuário clique OK.
Se você não deseja congelar, não use alertas.
Para depurar com o Firebug:
console.log("bla bla bla");
Para pop -ups não trancados:
Faça uma div oculta com um botão OK. Quando o pop -up deve ser mostrado. Coloque a div visível. Quando o usuário clica no "OK", oculte -o.
Eu aconselho você a não usar pop -ups. Ele também quebra o "fluxo de trabalho" (ou seja, a concentração do usuário) do usuário atrás da tela :)
Outras dicas
O trabalhador da web tem acesso ao Window.alert ... Eu sei que os trabalhadores da web não têm acesso ao DOM ..
no trabalhador, por que não fazer um
if (window && window.alert) {
// do your normal thing
}
else {
postMessage("no support for this");
}
Os funcionários da web permitem que você execute o código JavaScript em segundo plano. Os trabalhadores da web não podem chamar as funções alert () ou confirmar ().