WindowClient - 表示服务工作线程客户端的范围
WindowClient
是 ServiceWorker 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 的定义 |
工作草案 | 初始定义 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 42 | ≤18 | 441 | 不支持 | 未知 | 不支持 |
ancestorOrigins | 未知 | 未知 | 未知 | 不支持 | 未知 | 不支持 |
focus | 42 | ≤18 | 441 | 不支持 | 未知 | 不支持 |
focused | 42 | ≤18 | 441 | 不支持 | 未知 | 不支持 |
navigate | 49 | ≤18 | 441 | 不支持 | 未知 | 不支持 |
visibilityState | 42 | ≤18 | 441 | 不支持 | 未知 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 不支持 | 42 | 未知 | 44 | 未知 | 未知 | 不支持 |
ancestorOrigins | 不支持 | 未知 | 未知 | 未知 | 未知 | 未知 | 不支持 |
focus | 不支持 | 42 | 未知 | 44 | 未知 | 未知 | 不支持 |
focused | 不支持 | 42 | 未知 | 44 | 未知 | 未知 | 不支持 |
navigate | 不支持 | 49 | 未知 | 44 | 未知 | 未知 | 不支持 |
visibilityState | 不支持 | 42 | 未知 | 44 | 未知 | 未知 | 不支持 |
1. 在 Firefox 45 和 52 扩展支持版本(ESR)中,服务工作线程(和 Push)已被禁用。