客户端
注意:此功能仅在Service Workers中可用。
实例方法
Clients.get()
Clients.matchAll()
Clients.openWindow()
-
为给定的 URL 打开一个新的浏览器窗口,并返回一个
Promise
,用于新的WindowClient
。 Clients.claim()
-
允许活动的服务工作线程将自身设置为其
scope
内所有客户端的controller
。
示例
以下示例显示了现有的聊天窗口,或者在用户点击通知时创建一个新的聊天窗口。
js
addEventListener("notificationclick", (event) => {
event.waitUntil(
(async () => {
const allClients = await clients.matchAll({
includeUncontrolled: true,
});
let chatClient;
// Let's see if we already have a chat window open:
for (const client of allClients) {
const url = new URL(client.url);
if (url.pathname === "/chat/") {
// Excellent, let's use it!
client.focus();
chatClient = client;
break;
}
}
// If we didn't find an existing chat window,
// open a new one:
if (!chatClient) {
chatClient = await clients.openWindow("/chat/");
}
// Message the client:
chatClient.postMessage("New chat messages!");
})(),
);
});
规范
规范 |
---|
Service Workers # clients-interface |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。