このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

WindowClient: focus() メソッド

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2018年4月以降、すべてのブラウザーで利用可能です。

focus()WindowClient インターフェイスのメソッドで、現在のクライアントにユーザー入力フォーカスを与え、既存の WindowClient に解決するプロミス (Promise) を返します。

構文

js
focus()

引数

なし。

返値

既存の WindowClient に解決するプロミス (Promise)。

例外

InvalidAccessError DOMException

アプリのオリジンのウィンドウに一時的な有効化が行われていない場合、この例外でプロミスが拒否されます。

セキュリティ要件

  • アプリのオリジンの中で少なくとも 1 つのウィンドウで一時的な有効化が行われている必要があります。

js
self.addEventListener("notificationclick", (event) => {
  console.log("On notification click: ", event.notification.tag);
  event.notification.close();

  // これは、クライアントが既に開いているかどうかを確認し、
  // 開いている場合にフォーカスを合わせます
  event.waitUntil(
    clients
      .matchAll({
        type: "window",
      })
      .then((clientList) => {
        for (const client of clientList) {
          if (client.url === "/" && "focus" in client) return client.focus();
        }
        if (clients.openWindow) return clients.openWindow("/");
      }),
  );
});

仕様書

仕様書
Service Workers Nightly
# client-focus

ブラウザーの互換性