WindowClient
        
        
          
                Baseline
                
                  Widely available
                
                 *
              
        
        
        
          
                
              
                
              
                
              
        
        
      
      This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.
* Some parts of this feature may have varying levels of support.
Note: This feature is only available in Service Workers.
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.
Instance methods
WindowClient inherits methods from its parent interface, Client.
- WindowClient.focus()
- 
Gives user input focus to the current client. 
- 
Loads a specified URL into a controlled client page. 
Instance properties
WindowClient inherits properties from its parent interface, Client.
- WindowClient.ancestorOriginsRead only Experimental
- 
An array of strings that indicates the ancestor origins of the browsing context represented by this WindowClientin reverse order.
- WindowClient.focusedRead only
- 
A boolean that indicates whether the current client has focus. 
- WindowClient.visibilityStateRead only
- 
Indicates the visibility of the current client. This value can be one of "hidden"or"visible".
Example
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
| Specification | 
|---|
| Service Workers> # windowclient> | 
Browser compatibility
Loading…