Chrome 11 жалуется на то, что onmessage не определен для worker.js в строгом режиме ECMAScript 5 - PullRequest
0 голосов
/ 03 мая 2011

Недавно я переключил все свои проекты в строгий режим ECMAScript 5 (т. Е. Добавляю "use stricts"; в начало каждого файла JS), однако следующий пример кода MDC работает везде , кроме Chrome 11 .

https://developer.mozilla.org/en/Using_web_workers#The_JavaScript_code

Код в веб-работниках вызовет ошибку

Uncaught ReferenceError: onmessage is not defined.

Я попытался использовать var onmessage в качестве обходного пути, он будет работатьв Chrome 11, но не в Firefox 4. Мне все равно не следует использовать var, потому что AFAIK onmessage - это глобальная переменная, такая же как window, переопределять ее нет смысла.

Что мне делать

Ответы [ 2 ]

1 голос
/ 03 мая 2011

Тогда Chrome 11 - единственный, кто работает, поскольку ES5 ожидает этого.См. https://developer.mozilla.org/en/JavaScript/Strict_mode#Simplifying_variable_uses

У вас есть две возможности:

var onmessage = function(...

или

function onmessage(...

0 голосов
/ 04 мая 2011

Вы не должны переключаться в строгий режим, если не знаете, что это значит.Например, вы не можете указать неявные глобальные переменные, что является вашей проблемой.Укажите self.onmessage.

...