ServiceWorkerRegistration
Baseline 广泛可用 *
注意:此功能在 Web Workers 中可用。
ServiceWorkerRegistration 接口是 Service Worker API 的一部分,它代表一个 Service Worker 注册。您可以注册一个 Service Worker 来控制共享同一来源的一个或多个页面。
Service Worker 注册的生命周期会超出代表它们的 ServiceWorkerRegistration 对象在其对应 Service Worker 客户端生命周期内的存在时间。浏览器会维护一个活动的 ServiceWorkerRegistration 对象列表。
实例属性
也继承自其父接口 EventTarget 的属性。
ServiceWorkerRegistration.active只读-
返回一个状态为
activating或activated的 Service Worker。该属性初始值为null。如果客户端的 URL 落在注册的范围内(即在首次调用ServiceWorkerContainer.register时设置的scope选项),则活动 Service Worker 将控制该Client。 ServiceWorkerRegistration.backgroundFetch只读 实验性-
返回一个指向
BackgroundFetchManager对象的引用,该对象负责管理后台获取操作。 -
返回一个指向
CookieStoreManager接口的引用,该接口允许订阅和取消订阅 cookie 更改事件。 ServiceWorkerRegistration.index只读 实验性-
返回一个指向
ContentIndex接口的引用,用于管理用于离线查看的索引内容。 ServiceWorkerRegistration.installing只读-
返回一个状态为
installing的 Service Worker。该属性初始值为null。 -
返回与当前 Service Worker 注册关联的
NavigationPreloadManager实例。 ServiceWorkerRegistration.paymentManager只读 实验性-
返回一个支付应用的
PaymentManager实例,用于管理各种支付应用功能。 ServiceWorkerRegistration.periodicSync只读 实验性-
返回一个指向
PeriodicSyncManager接口的引用,该接口允许注册在特定时间间隔运行的任务。 ServiceWorkerRegistration.pushManager只读-
返回一个指向
PushManager接口的引用,用于管理推送订阅,包括订阅、获取当前订阅和访问推送权限状态。 ServiceWorkerRegistration.scope只读-
返回一个字符串,表示定义 Service Worker 注册范围的 URL;也就是说,Service Worker 可以控制的 URL 范围。
ServiceWorkerRegistration.sync只读-
返回一个指向
SyncManager接口的引用,该接口负责管理后台同步进程。 ServiceWorkerRegistration.updateViaCache只读-
返回用于确定在尝试更新 Service Worker 或通过
importScripts()导入的任何脚本时,浏览器将如何查询 HTTP 缓存的设置值。它可以是以下值之一:imports、all或none。 ServiceWorkerRegistration.waiting只读-
返回一个状态为
installed的 Service Worker。该属性初始值为null。
实例方法
也继承自其父接口 EventTarget 的方法。
ServiceWorkerRegistration.getNotifications()-
从当前来源通过当前 Service Worker 注册创建的通知列表,按创建顺序返回。
ServiceWorkerRegistration.showNotification()-
显示带有请求标题的通知。
ServiceWorkerRegistration.unregister()-
注销 Service Worker 注册并返回一个
Promise。Service Worker 在注销前将完成所有正在进行的活动。 ServiceWorkerRegistration.update()-
检查服务器是否有更新版本的 Service Worker,而不查询缓存。
事件
updatefound-
当
ServiceWorkerRegistration.installing属性获取到一个新的 Service Worker 时,随时触发。
示例
在此示例中,代码首先检查浏览器是否支持 Service Worker,如果支持则注册一个。接下来,它添加了一个 updatefound 监听器,在该监听器中,它使用 Service Worker 注册来监听 Service Worker 状态的进一步变化。如果 Service Worker 自上次注册以来没有改变,则不会触发 updatefound 事件。
if ("serviceWorker" in navigator) {
navigator.serviceWorker
.register("/sw.js")
.then((registration) => {
registration.addEventListener("updatefound", () => {
// If updatefound is fired, it means that there's
// a new service worker being installed.
const installingWorker = registration.installing;
console.log(
"A new service worker is being installed:",
installingWorker,
);
// You can listen for changes to the installing service worker's
// state via installingWorker.onstatechange
});
})
.catch((error) => {
console.error(`Service worker registration failed: ${error}`);
});
} else {
console.error("Service workers are not supported.");
}
规范
| 规范 |
|---|
| Service Workers # serviceworkerregistration-interface |
| 推送 API # extensions-to-the-serviceworkerregistration-interface |
浏览器兼容性
加载中…