--- title: Worker slug: Web/API/Worker tags: - API - DOM - Interface - JavaScript - Reference - Web Workers - Worker - Workers translation_of: Web/API/Worker ---
{{APIRef("Web Workers API")}}
Web Workers API の Worker
インターフェイスはバックグラウンドで行われるタスクを実行することができ、そのタスクは簡単に生成され、かつ作成元にメッセージを送り返すことができます。Worker()
コンストラクターを呼び出しワーカースレッドを走らせるスクリプトを特定してあげるだけでワーカーオブジェクトを作成することができます。
ワーカーは同じ親ページの同一 オリジン 内でホストされている限り、他の新しいワーカーを発生させる可能性があります (注記: 入れ子の worker は WebKit で未実装です)。それにくわえて、ワーカーはネットワーク I/O のための XMLHttpRequest
を使用することもあります。なお、XMLHttpRequest
の responseXML
と channel
属性は常に null
を返す決まりです。
必ずしも すべてのインターフェイスと関数 が Worker
のスクリプトに関連づいているわけではありません。
Firefox において、ワーカーをエクステンションを用いて js-ctypes にアクセスしたい場合、{{ domxref("ChromeWorker") }} オブジェクトを代わりに使用しなくてはいけません。
{{domxref("EventTarget")}} より継承しています。また、{{domxref("AbstractWorker")}} のメソッドを定義しています。
error
タイプの {{domxref("ErrorEvent")}} がワーカーを通して発生するとき、常に {{ domxref("EventListener") }} を呼びます。これは {{domxref("AbstractWorker")}} からの継承メソッドです。message
タイプの {{domxref("MessageEvent")}} がワーカーを通して発生するときは常に {{ domxref("EventListener") }} を呼びます。例えば、{{domxref("DedicatedWorkerGlobalScope.postMessage")}} を経由して親要素のドキュメントにメッセージが送信されます。メッセージは {{domxref("MessageEvent.data", "data")}} プロパティに保存されます。{{domxref("EventTarget")}} より継承しています。また、{{domxref("AbstractWorker")}} のメソッドを定義しています。
次のコード例では、{{domxref("Worker.Worker", "Worker()")}} コンストラクターを用いて {{domxref("Worker")}} オブジェクトを生成しています。
var myWorker = new Worker('worker.js'); var first = document.querySelector('#number1'); var second = document.querySelector('#number2'); first.onchange = function() { myWorker.postMessage([first.value,second.value]); console.log('Message posted to worker'); }
完全なサンプルは次のリンクより御覧ください:Basic dedicated worker example (run dedicated worker)。
仕様書 | 策定状況 | コメント |
---|---|---|
{{SpecName('HTML WHATWG', "#worker", "Worker")}} | {{Spec2('HTML WHATWG')}} |
worker の種類に応じてサポート状況が異なります。詳しくは、それぞれの worker のページをご覧ください。
{{Compat("api.Worker")}}
古いバージョンのブラウザーでクロスオリジンの worker のスクリプトを読み込もうとすると、SecurityError
が発生していました。仕様が変わったため、新しいブラウザーでは {{event("error")}} イベントが発生します。この処理方法について詳しくは クロスオリジンの Worker 読み込みが例外の代わりに error イベントを発生させるようになり、サンドボックス化された iframe 内の Worker が禁止されます をご覧ください。