方法
Clients.get()Clients.matchAll()Clients.openWindow()-
打开给定 URL 的新浏览器窗口,并返回新
WindowClienta 的Promise. Clients.claim()-
允许一个激活的 service worker 将自己设置为其
scope内所有 clients 的controller.
示例
下面示例显示一个已有的聊天窗口,或者当用户点击通知时创建新的窗口。
js
addEventListener("notificationclick", (event) => {
event.waitUntil(
(async function () {
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 Nightly> # clients-interface> |