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()
は必要ありません。
構文
startMessages()
引数
なし。
返値
undefined
です。
例
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