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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
startMessages

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support