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");
}
Foi útil?

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 ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top