Back to Content

WindowClient

files/en-us/web/api/windowclient/index.md

latest2.4 KB
Original Source

{{APIRef("Service Workers API")}}{{AvailableInWorkers("service")}}

The WindowClient interface of the ServiceWorker API represents the scope of a service worker client that is a document in a browsing context, controlled by an active worker. The service worker client independently selects and uses a service worker for its own loading and sub-resources.

{{InheritanceDiagram}}

Instance methods

WindowClient inherits methods from its parent interface, {{domxref("Client")}}.

  • {{domxref("WindowClient.focus()")}}
    • : Gives user input focus to the current client.
  • {{domxref("WindowClient.navigate()")}}
    • : Loads a specified URL into a controlled client page.

Instance properties

WindowClient inherits properties from its parent interface, {{domxref("Client")}}.

  • {{domxref("WindowClient.ancestorOrigins")}} {{ReadOnlyInline}} {{experimental_inline}}
    • : An array of strings that indicates the ancestor origins of the browsing context represented by this WindowClient in reverse order.
  • {{domxref("WindowClient.focused")}} {{ReadOnlyInline}}
    • : A boolean that indicates whether the current client has focus.
  • {{domxref("WindowClient.visibilityState")}} {{ReadOnlyInline}}
    • : Indicates the visibility of the current client. This value can be one of "hidden" or "visible".

Example

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

  // This looks to see if the current is already open and
  // focuses if it is
  event.waitUntil(
    clients
      .matchAll({
        type: "window",
      })
      .then((clientList) => {
        for (const client of clientList) {
          if (client.url === "/" && "focus" in client) {
            client.focus();
            break;
          }
        }
        if (clients.openWindow) return clients.openWindow("/");
      }),
  );
});

Specifications

{{Specifications}}

Browser compatibility

{{Compat}}

See also