WindowClient - 表示服务工作线程客户端的范围

WindowClientServiceWorker API 的接口,表示服务工作线程客户端的范围,该客户端是在浏览上下文中的文档,由活动工作线程控制。服务工作线程客户端独立选择服务工作线程并将其用于自己的加载和子资源。

属性

WindowClient 从其父接口 Client 继承了属性。

WindowClient.focused 只读

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

WindowClient.visibilityState 只读

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

方法

WindowClient 从其父接口 Client 继承了方法。

WindowClient.focus()

将用户输入焦点集中在当前客户端上。

WindowClient.navigate()

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

实例

self.addEventListener('notificationclick', function(event) {
  console.log('点击了通知:', event.notification.tag);
  event.notification.close();

  // 这将查看当前是否已经打开,如果当前已打开,则进行聚焦
  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) {
        client.focus();
        break;
      }
    }
    if (clients.openWindow)
      return clients.openWindow('/');
  }));
});

规范

规范 状态 备注
Service Workers
WindowClient 的定义
工作草案 初始定义

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持42≤18441 不支持 未知 不支持
ancestorOrigins 未知 未知 未知 不支持 未知 不支持
focus42≤18441 不支持 未知 不支持
focused42≤18441 不支持 未知 不支持
navigate49≤18441 不支持 未知 不支持
visibilityState42≤18441 不支持 未知 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 不支持42 未知44 未知 未知 不支持
ancestorOrigins 不支持 未知 未知 未知 未知 未知 不支持
focus 不支持42 未知44 未知 未知 不支持
focused 不支持42 未知44 未知 未知 不支持
navigate 不支持49 未知44 未知 未知 不支持
visibilityState 不支持42 未知44 未知 未知 不支持

1. 在 Firefox 45 和 52 扩展支持版本(ESR)中,服务工作线程(和 Push)已被禁用。

相关链接