客户端:claim() 方法
注意:此功能仅在 Service Workers 中可用。
claim()
方法是 Clients
接口的一种方法,允许活动的 Service Worker 将自身设置为其 scope
内所有客户端的 controller
。这将在任何受此 Service Worker 控制的客户端的 navigator.serviceWorker
上触发 “controllerchange
” 事件。
当最初注册 Service Worker 时,页面在下次加载之前不会使用它。claim()
方法会导致这些页面立即被控制。请注意,这会导致你的 Service Worker 控制通过网络定期加载的页面,或者可能通过不同的 Service Worker 加载的页面。
语法
js
claim()
参数
无。
返回值
一个 Promise
,它解析为 undefined
。
示例
以下示例在 Service Worker 的 “activate
” 事件监听器中使用 claim()
,以便在同一作用域中加载的客户端无需重新加载即可通过此 Service Worker 进行提取。
js
self.addEventListener("activate", (event) => {
event.waitUntil(clients.claim());
});
规范
规范 |
---|
Service Workers # clients-claim |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
- 使用 Service Workers
- Service Worker 生命周期
self.skipWaiting()
- 跳过 Service Worker 的等待阶段