WindowClient

注意:此功能仅在Service Workers中可用。

WindowClient 接口是 ServiceWorker API 的一部分,它表示服务工作线程客户端的范围,该客户端是在浏览上下文中处于活动状态的工作线程所控制的文档。服务工作线程客户端独立地选择并使用服务工作线程来加载自身和子资源。

Client WindowClient

实例方法

WindowClient 继承自其父接口 Client 的方法。

WindowClient.focus()

将用户输入焦点赋予当前客户端。

WindowClient.navigate()

将指定的 URL 加载到受控的客户端页面中。

实例属性

WindowClient 继承自其父接口 Client 的属性。

WindowClient.ancestorOrigins 只读 实验性

一个字符串数组,以相反的顺序指示此 WindowClient 所表示的浏览上下文的祖先来源。

WindowClient.focused 只读

一个布尔值,指示当前客户端是否具有焦点。

WindowClient.visibilityState 只读

指示当前客户端的可见性。此值可以是 "hidden""visible""prerender" 之一。

示例

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("/");
      }),
  );
});

规范

规范
Service Workers
# windowclient

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅