なぜこのエラーが表示されるのですか?
このグローバル機能を正しく使用できるはずです。
http://www.html5rocks.com/en/tutorials/workers/basics/
私はクロムを使用しています。
https://code.google.com/p/bitjs/ を使用しています。
importScripts('io.js');
importScripts('archive.js');
このコードはワーカースクリプト内にある必要があります。ワーカー自体は、新しいWorker
オブジェクトを介して作成されます-チュートリアルの Getting Started を参照してください。
リンクしたコードは、作成されたワーカー内にあります here 。
ワーカーを作成すると、実際には2回実行されます。最初のパスは、グローバルな「ウィンドウ」オブジェクトのコンテキストで行われます(つまり、すべてのウィンドウオブジェクト関数にアクセスできます)。 2番目の呼び出しは、「importScripts」が存在する別のグローバルオブジェクトを持つワーカーのコンテキストで行われます。
// proper initialization
if( 'function' === typeof importScripts) {
importScripts('script2.js');
addEventListener('message', onMessage);
function onMessage(e) {
// do some work here
}
}
AddEventListenerがifステートメント内にあることに注意してください。外側に配置すると、コールバックは2回登録されます。 「ウィンドウ」グローバルに1回、ワーカーのグローバルに1回。
ハッピーコーディング!
このエラーも発生しました。私の場合、それはKarma/Jasmineを使用してコードをテストしているためです。テストフレームワークのため、worker.jsファイルもメインスレッドによってロードされます。
Worker.jsファイルを次のようにラップして、このエラーを回避しました。
if( 'undefined' === typeof window){
importScripts('workerscript2.js');
...
}
代替ソリューションを提供するロブのコメントを参照してください。