Chrome 11 si lamenta di OnMessage non è definito per Worker.js in ECMAScript 5 Modalità rigorosa
-
28-10-2019 - |
Domanda
Di recente ho cambiato tutti i miei progetti in modalità rigorosa ECMAScript 5 (cioè Aggiungi "use stricts";
In cima a ogni file JS), tuttavia il seguente codice di esempio MDC funziona ovunque Tranne Chrome 11.
https://developer.mozilla.org/en/using_web_workers#the_javascript_code
Il codice nei lavoratori web invocherà l'errore
Uncaught ReferenceError: onmessage is not defined.
Ho provato a usare var onmessage
Come soluzione alternativa, funzionerebbe in Chrome 11 ma non in Firefox 4. Non dovrei usare var
Comunque perché Afaik onmessage
è una variabile globale proprio come window
, ridefinendolo non ha senso.
Cosa dovrei fare?
Soluzione
Non dovresti passare alla modalità rigorosa se non sai cosa significhi. Per uno, non è possibile specificare variabili globali implicite, che è il tuo problema. Specificare self.onmessage
.
Altri suggerimenti
Quindi Chrome 11 è l'unico che lavora come ES5 lo aspetta. Vedere https://developer.mozilla.org/en/javascript/strict_mode#simplify_vable_uses
Hai due possibilità:
var onmessage = function(...
o
function onmessage(...