WindowClient: visibilityState プロパティ

visibilityStateWindowClient インターフェイスの読み取り専用プロパティで、現在のクライアントの可視性を示します。 この値は、"hidden""visible""prerender" のいずれかです。

文字列です(値については Document.visibilityState を参照)。

js
event.waitUntil(
  clients
    .matchAll({
      type: "window",
    })
    .then((clientList) => {
      for (const client of clientList) {
        if (client.url === "/" && "focus" in client) {
          if (client.visibilityState === "hidden") return client.focus();
        }
      }
      if (clients.openWindow) {
        return clients.openWindow("/");
      }
    }),
);

仕様書

Specification
Service Workers
# client-visibilitystate

ブラウザーの互換性

BCD tables only load in the browser