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());
});

仕様

仕様 状態 コメント
Service Workers
claim() の定義
草案 初期定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
claim
実験的
Chrome 完全対応 42Edge 完全対応 ≤79Firefox 完全対応 44
補足
完全対応 44
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera 完全対応 29Safari 未対応 なしWebView Android 完全対応 42Chrome Android 完全対応 42Firefox Android 完全対応 44Opera Android 完全対応 29Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0

凡例

完全対応  
完全対応
未対応  
未対応
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
実装ノートを参照してください。
実装ノートを参照してください。

関連情報