Chrome 11 se queja de que OnMessage no se define para trabajador.
-
28-10-2019 - |
Pregunta
Recientemente cambié todos mis proyectos al modo Ecmascript 5 Strict (es decir, agregar "use stricts";
En la parte superior de cada archivo JS), sin embargo, el siguiente código de ejemplo de MDC funciona en todas partes excepto en Chrome 11.
https://developer.mozilla.org/en/using_web_workers#the_javascript_code
El código en los trabajadores web invocará un error
Uncaught ReferenceError: onmessage is not defined.
Traté de usar var onmessage
Como solución, funcionaría en Chrome 11 pero no en Firefox 4. No debería estar usando var
De todos modos porque Afaik onmessage
es una variable global como window
, redefinirlo no tiene sentido.
¿Qué tengo que hacer?
Solución
No debe cambiar al modo estricto si no sabe lo que significa. Por un lado, no puede especificar variables globales implícitas, que es su problema. Especificar self.onmessage
.
Otros consejos
Entonces Chrome 11 es el único que trabaja como el ES5 lo está esperando. Ver https://developer.mozilla.org/en/javascript/strict_mode#simplificing_variable_uses
Tienes dos posibilidades:
var onmessage = function(...
o
function onmessage(...