--- title: WindowClient slug: Web/API/WindowClient tags: - API - Client - Experimental - Interface - NeedsTranslation - Reference - Service Workers - ServiceWorker - TopicStub - WindowClient translation_of: Web/API/WindowClient ---

{{SeeCompatTable}}{{APIRef("Service Workers API")}}

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

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.

Properties

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

{{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, visible, prerender, or unloaded.

Example

self.addEventListener('notificationclick', function(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(function(clientList) {
    for (var i = 0; i < clientList.length; i++) {
      var client = clientList[i];
      if (client.url == '/' && 'focus' in client)
        return client.focus();
    }
    if (clients.openWindow)
      return clients.openWindow('/');
  }));
});

Specifications

Specification Status Comment
{{SpecName('Service Workers', '#window-client-interface', 'WindowClient')}} {{Spec2('Service Workers')}} Initial definition

Browser compatibility

{{CompatibilityTable}}
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support {{CompatChrome(42.0)}} {{ CompatGeckoDesktop("44.0") }}[1] {{CompatNo}} {{CompatUnknown}} {{CompatNo}}
navigate() {{CompatChrome(49.0)}}        
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support {{CompatNo}} {{CompatNo}} {{ CompatGeckoMobile("44.0") }} {{ CompatVersionUnknown }} {{CompatNo}} {{CompatUnknown}} {{CompatNo}} {{CompatChrome(42.0)}}
navigate() {{CompatNo}} {{CompatNo}}           {{CompatChrome(49.0)}}

[1] Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR.)

See also