--- title: Worker slug: Web/API/Worker tags: - API - DOM - Interface - JavaScript - Reference - Web Workers - Worker - Workers browser-compat: api.Worker translation_of: Web/API/Worker ---
Worker
は Web Workers API のインターフェイスです。スクリプトで生成することができるバックグラウンドタスクを表し、作成元にメッセージを送り返すことができます。ワーカーは Worker("path/to/worker/script")
コンストラクターを呼び出すことで生成することができます。
ワーカーは同じ親ページの同一 オリジン 内でホストされている限り、他の新しいワーカーを生成することができます (注: 入れ子になったワーカーは WebKit では未実装です)。
利用可能なすべてのインターフェイスと関数 がすべて Worker
の中で利用できるとは限りません。ワーカーはネットワーク通信のために {{domxref("XMLHttpRequest")}} を使うことができますが、 responseXML
属性と channel
属性は常に null
になります。 (fetch
も利用可能であり、このような制限はありません。)
親インターフェイスである {{domxref("EventTarget")}} からプロパティを継承しています。
error
であるイベントが発行されるたびに呼び出されます。message
であるイベントが発行されるたびに呼び出されます。すなわち、 {{domxref("DedicatedWorkerGlobalScope.postMessage")}} を経由して親文書にメッセージが送信されます。メッセージは {{domxref("MessageEvent.data", "data")}} プロパティに格納されます。親である {{domxref("EventTarget")}} からメソッドを継承しています。
ServiceWorker
インスタンスはこのメソッドを備えていません。message
onmessage
プロパティからも利用できます。messageerror
Worker
オブジェクトが シリアライズ解除できないというメッセージを受け取ったときに発行されます。onmessageerror
プロパティからも利用できます。rejectionhandled
onrejectionhandled
イベントハンドラープロパティからも利用できます。unhandledrejection
onunhandledrejection
イベントハンドラープロパティからも利用できます。次のコード例では、 {{domxref("Worker")}} オブジェクトを、 {{domxref("Worker.Worker", "Worker()")}} コンストラクターを用いて生成しています。
var myWorker = new Worker('/worker.js'); var first = document.querySelector('input#number1'); var second = document.querySelector('input#number2'); first.onchange = function() { myWorker.postMessage([first.value, second.value]); console.log('Message posted to worker'); }
完全な例は、 Basic dedicated worker example (専用ワーカーを実行) を参照してください。
ワーカーの種類に応じて対応状況が異なります。詳しくは、それぞれの種類のワーカーのページをご覧ください。
{{Compat}}
古いバージョンのブラウザーでオリジンをまたいでワーカーのスクリプトを読み込もうとすると、 SecurityError
が発生していました。最近は、 {{event("error")}} イベントが発行されるようになりました。