ServiceWorkerContainer.startMessages()
ServiceWorkerContainer
インターフェイスの startMessages()
メソッドは、サービスワーカーからその制御下にあるページにディスパッチされるメッセージの流れを明示的に開始します(例えば、Client.postMessage()
を介して送信されます)。 これは、ページのコンテンツの読み込みが完了する前であっても、送信されたメッセージに早く反応するために使用できます。
説明
デフォルトでは、ページの読み込み中に、ページを制御するサービスワーカーから(Client.postMessage()
を使用して)ページに送信されたすべてのメッセージはキューに入れられ、ページの HTML 文書が読み込まれて解析されると(つまり、DOMContentLoaded
イベント発生の後に)ディスパッチされます。 例えば、ページの読み込みが完了する前に EventTarget.addEventListener()
を使用してメッセージハンドラーを呼び出したが、すぐにメッセージの処理を開始したい場合は、ServiceWorkerContainer.startMessages()
を呼び出すことで、これらのメッセージのディスパッチを開始できます。
注: ServiceWorkerContainer.onmessage
を使用してハンドラーを直接設定すると、メッセージの送信が自動的に開始されます。 この場合、startMessages()
は必要ありません。
構文
serviceWorkerContainer.startMessages();
パラメーター
なし。
戻り値
undefined
。
例
if('serviceWorker' in navigator) {
navigator.serviceWorker
.register('/sw.js')
.then(function() { console.log('サービスワーカーが登録された'); });
}
// ...
navigator.serviceWorker.addEventListener('message', (e) => {
// ...
});
navigator.serviceWorker.startMessages();
仕様
仕様 | 状態 | コメント |
---|---|---|
Service Workers ServiceWorkerContainer: startMessages() の定義 |
草案 | 初期定義 |
ブラウザーの互換性
BCD tables only load in the browser