debugger - depurar javascript chrome
Chrome no puede cargar el trabajador web (12)
Chrome no permite cargar trabajadores web al ejecutar scripts desde un archivo local.
Estoy trabajando en un proyecto que utiliza un trabajador web.
En mi sección principal, tengo este código:
var worker = new Worker("worker.js");
// More code
Esto funciona bien en Safari, pero Chrome informa del siguiente error:
Uncaught SecurityError: Failed to create a worker: script at ''(path)/worker.js'' cannot be accessed from origin ''null''.
¿Por qué funciona esto perfectamente en Safari pero no en Chrome? ¿Cómo puedo solucionar esto?
Gracias.
Con Python 2.x siendo más ampliamente implementado que Python 3.x, algo similar a python -m SimpleHTTPServer 8000
es más aplicable en general, y no solo para Mac OS X. Encontré necesario su uso bajo Cygwin, por ejemplo.
Con eso en su lugar, este ejemplo funcionó como un campeón.
El problema ha sido explicado adecuadamente por Noble Chicken, pero tengo una solución más general para él. En lugar de instalar wamp o xamp, con python puede navegar hasta la carpeta en la que está alojado el proyecto y escribir: python -m http.server
Solo eso y tendrá un servidor en ejecución en esa carpeta, accesible desde localhost.
Es por las restricciones de seguridad. Necesita usar el protocolo http://
o https://
lugar del file:///
.
Si tiene NodeJS instalado, simplemente puede hacer lo siguiente. - Tenga en cuenta que esta es una de las muchas opciones disponibles
Instalar local-web-server
$ npm install -g local-web-server
Ahora puede usarlo en cualquier carpeta a la que desee acceder mediante http
.
$ ws
Navegue a http://localhost:8000
(puerto predeterminado: 8000)
Otra solución es usar el servidor web de Google para la extensión de Chrome . Elija su directorio de trabajo e inicie el servidor, ¡listo!
Probablemente, una razón es que Chrome no permite cargar trabajadores web al ejecutar scripts desde un archivo local. Y trato de ejecutar el código en mi Firefox, tampoco puedo.
Sí, no funcionará en chorome si está cargando un archivo local. Pero funcionará bien en el navegador Firefox. Y debe agregar el código siguiente en el archivo HTML.
<head>
<meta charset="UTF-8" />
</head>
También puede usar el indicador --allow-file-access-from-files cuando ejecuta Chrome.
Ejemplo para MacOsX:
/Applications/Google/ Chrome.app/Contents/MacOS/Google/ Chrome --allow-file-access-from-files
Más información: configuración del trabajador web para Chrome
Tuve el mismo problema que tu publicación también. La solución es que debe ejecutarlo con localhost (wamp o xamp). Lo hará.
Yo uso una solución alternativa. Chrome bloquea Worker
pero no <script>
. Por lo tanto, la mejor manera de hacer una solución universal es esta:
function worker_function() {
// all code here
}
// This is in case of normal worker start
// "window" is not defined in web worker
// so if you load this file directly using `new Worker`
// the worker code will still execute properly
if(window!=self)
worker_function();
A continuación, lo vincula como normalmente <script src="..."
. Y una vez que se define la función, usas esta abominación de un código:
new Worker(URL.createObjectURL(new Blob(["("+worker_function.toString()+")()"], {type: ''text/javascript''})));
necesita un servidor web para solicitarlo desde el protocolo HTTP En lugar de un archivo local y funciona correctamente :)
Chrome
carga el archivo pero no puede ejecutarlo. Usa Firefox
Está funcionando para mí.