Exemplo HTML 5 Web Worker não funciona em 8.0.552.231
-
25-09-2019 - |
Pergunta
Estou seguindo este exemplo em: http://www.whatwg.org/specs/web-workers/current-work/
página.html
<!DOCTYPE HTML>
<html>
<head>
<title>Worker example: One-core computation</title>
</head>
<body>
<p>The highest prime number discovered so far is: <output id="result"></output></p>
<script>
var worker = new Worker('worker.js');
worker.onmessage = function (event) {
document.getElementById('result').textContent = event.data;
};
</script>
</body>
</html>
trabalhador.js
var n = 1;
search: while (true) {
n += 1;
for (var i = 2; i <= Math.sqrt(n); i += 1)
if (n % i == 0)
continue search;
// found a prime!
postMessage(n);
}
Este exemplo funciona bem no Firefox e Safari versão 5.0.2 (6533.18.5) no Mac OSX, mas não funciona no Chrome. Quando eu depurar, Worker.js nem sequer está listado como uma das fontes. O que é bizarro é que o link da página de exemplo no mesmo site funciona bem no Chrome, que é o mesmo código do meu código local. Mas meu código local não funciona no Chrome.
Quando tento executar manualmente o código no depurador JavaScript como este
var w = new Worker('worker.js')
Eu recebo um erro dizendo:
Error: SECURITY_ERR: DOM Exception 18
Alguém mais teve essa experiência? Alguém pode sugerir uma solução?
Obrigado
Solução
Você está visualizando este arquivo no file:///
protocolo ou mais http://
? Você terá que servir a página para que a segurança o processe corretamente.
Erro não capturado: Security_err: DOM Exceção 18 Quando tento definir um cookie
Outras dicas
O RXGX está no local, eu já vi esse erro com frequência. Quanto a uma solução, compre uma hospedagem compartilhada barata para desenvolvimento ou execute um servidor da Web da sua própria máquina. Para Windows, faça o download e instale o instalador do Apache disponibilizado na Apache Foundation e siga as instruções. Para o Mac OS X, basta ativar o compartilhamento da Web na seção de compartilhamento das preferências do sistema. Para o Linux, instale um pacote Apache ou LightTPD através do seu gerenciador de pacotes.