ServiceWorkerContainer.startMessages()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

startMessages()ServiceWorkerContainer インターフェイスのメソッドで、サービスワーカーからその制御下にあるページに配信されるメッセージの流れを明示的に開始します(例えば、 Client.postMessage() を介して送信されます)。 これは、ページのコンテンツの読み込みが完了する前であっても、送信されたメッセージに早く反応するために使用できます。

説明

既定では、ページの読み込み中に、ページを制御するサービスワーカーから(Client.postMessage() を使用して)ページに送信されたすべてのメッセージはキューに入れられ、ページの HTML 文書が読み込まれて解析されると(つまり、 DOMContentLoaded イベント発生の後に)ディスパッチされます。 例えば、ページの読み込みが完了する前に EventTarget.addEventListener() を使用してメッセージハンドラーを呼び出したが、すぐにメッセージの処理を開始したい場合は、ServiceWorkerContainer.startMessages() を呼び出すことで、これらのメッセージの配信を開始できます。

メモ: onmessage を使用してハンドラーを直接設定すると、メッセージの送信が自動的に開始されます。 この場合、startMessages() は必要ありません。

構文

js
startMessages()

引数

なし。

返値

undefined です。

js
if ("serviceWorker" in navigator) {
  navigator.serviceWorker.register("/sw.js").then(() => {
    console.log("サービスワーカーが登録された");
  });
}

// …

navigator.serviceWorker.addEventListener("message", (e) => {
  // …
});

navigator.serviceWorker.startMessages();

仕様書

Specification
Service Workers
# navigator-service-worker-startMessages

ブラウザーの互換性

BCD tables only load in the browser