Clients.claim()
Clients
インターフェイスの claim()
メソッドを使用すると、アクティブなサービスワーカーが自身のスコープ(scope
)内のすべてのクライアントのコントローラー(controller
)として自分自身を設定できます。 これにより、このサービスワーカーによって制御されるようになるクライアントの navigator.serviceWorker
で "controllerchange"
イベントがトリガーされます。
サービスワーカーが最初に登録されると、ページは次に読み込まれるまでそれを使用しません。 claim()
メソッドを使用すると、これらのページがすぐに制御されます。 これにより、サービスワーカーがネットワークを介して、または別のサービスワーカーを介して定期的に読み込まれるページを制御することに注意してください。
構文
await clients.claim();
パラメーター
なし。
戻り値
undefined
に解決される Promise
。
例
次の例では、サービスワーカーの "activate"
イベントリスナー内で claim()
を使用しているため、同じスコープに読み込まれたクライアントは、フェッチがこのサービスワーカーを通過する前に再読み込みする必要がありません。
self.addEventListener('activate', event => {
event.waitUntil(clients.claim());
});
仕様
Specification |
---|
Service Workers # clients-claim |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- Service worker の使用
- Service Worker のライフサイクル
- ServiceWorker の準備はできていますか?(英語)
Promises
self.skipWaiting()
- サービスワーカーの待機フェーズをスキップする