SharedWorker()

SharedWorker() コンストラクターは、指定された URL でスクリプトを実行する SharedWorker オブジェクトを作成します。このスクリプトは同一オリジンポリシーに従わなければなりません。

メモ: ブラウザーメーカー間で、 data URL が同じ元であるかどうかについての見解の相違があります。 Firefox 10.0 以降では data URL を受け入れることができますが、他のすべてのブラウザーではその限りではありません。

構文

js
new SharedWorker(aURL)
new SharedWorker(aURL, name)
new SharedWorker(aURL, options)

引数

aURL

文字列で、ワーカーが実行するスクリプトの URL を表します。これは同一オリジンポリシーに従わなければなりません。

name 省略可

ワーカーのスコープを表す SharedWorkerGlobalScope の識別名を指定する文字列で、主にデバッグのために使用されます。

options 省略可

オブジェクトのインスタンスを作成する際に設定することができる、オプションプロパティを格納したオブジェクト。利用できるプロパティは以下のとおりです。

type

作成するワーカーの種類を指定する文字列です。この値には classic または module を指定することができます。指定しない場合、既定では classic が使用されます。

credentials

ワーカーに使用する資格情報の種類を指定する文字列です。値は omitsame-origininclude のいずれかです。指定しなかった場合、または type が classic の場合、既定では omit (資格情報は必要なし) が使用されます。

name

ワーカーのスコープを表す SharedWorkerGlobalScope の識別名を指定する文字列で、主にデバッグのために使用されます。

例外

SecurityError DOMException

ドキュメントがワーカーの開始を許可されていない場合、例えば URL が無効な構文であったり、同一オリジンポリシーに違反していたりする場合に発生します。

NetworkError DOMException

ワーカースクリプトの MIME 型が正しくない場合に発生します。常に text/javascript であるべきです(歴史的な理由から他の JavaScript MIME タイプも受け入れられるかもしれません)。

SyntaxError DOMException

aURL が解釈できない場合に発生します。

以下のコードでは、SharedWorker() コンストラクターを使用して SharedWorker オブジェクトを作成し、その後にそのオブジェクトを使用している様子を示しています。

js
const myWorker = new SharedWorker("worker.js");

myWorker.port.start();

first.onchange = () => {
  myWorker.port.postMessage([first.value, second.value]);
  console.log("Message posted to worker");
};

second.onchange = () => {
  myWorker.port.postMessage([first.value, second.value]);
  console.log("Message posted to worker");
};

myWorker.port.onmessage = (e) => {
  result1.textContent = e.data;
  console.log("Message received from worker");
};

完全な例は、基本的な共有ワーカーの例共有ワーカーを実行)を参照してください。

仕様書

Specification
HTML Standard
# dom-sharedworker-dev

ブラウザーの互換性

BCD tables only load in the browser

関連情報