ServiceWorkerRegistration
注意:此功能在Web Workers中可用。
ServiceWorkerRegistration
是Service Worker API中的一个接口,它表示服务工作者注册。您注册一个服务工作者来控制一个或多个共享相同原点的页面。
服务工作者注册的生存期超出了在相应的服务工作者客户端的生存期内代表它们的ServiceWorkerRegistration
对象的生存期。浏览器维护一个活动ServiceWorkerRegistration
对象的持久列表。
实例属性
也继承自其父接口EventTarget
的属性。
ServiceWorkerRegistration.active
只读-
返回一个状态为
activating
或activated
的服务工作者。最初将其设置为null
。如果客户端的 URL 位于注册范围(首次调用ServiceWorkerContainer.register
时设置的scope
选项)内,则活动工作者将控制Client
。 ServiceWorkerRegistration.backgroundFetch
只读 实验性-
返回对
BackgroundFetchManager
对象的引用,该对象管理后台获取操作。 -
返回对
CookieStoreManager
接口的引用,该接口允许订阅和取消订阅 Cookie 更改事件。 ServiceWorkerRegistration.index
只读 实验性-
返回对
ContentIndex
接口的引用,用于管理离线查看的索引内容。 ServiceWorkerRegistration.installing
只读-
返回一个状态为
installing
的服务工作者。最初将其设置为null
。 -
返回与当前服务工作者注册相关的
NavigationPreloadManager
的实例。 ServiceWorkerRegistration.paymentManager
只读 实验性-
返回支付应用程序的
PaymentManager
实例,用于管理各种支付应用程序功能。 ServiceWorkerRegistration.periodicSync
只读 实验性-
返回对
PeriodicSyncManager
接口的引用,该接口允许注册在特定间隔运行的任务。 ServiceWorkerRegistration.pushManager
只读-
返回对
PushManager
接口的引用,用于管理推送订阅,包括订阅、获取活动订阅以及访问推送权限状态。 ServiceWorkerRegistration.scope
只读-
返回一个字符串,表示定义服务工作者注册范围的 URL;也就是说,服务工作者可以控制的 URL 范围。
ServiceWorkerRegistration.sync
只读-
返回对
SyncManager
接口的引用,该接口管理后台同步过程。 ServiceWorkerRegistration.updateViaCache
只读-
返回用于确定浏览器在尝试更新服务工作者或通过
importScripts()
导入的任何脚本时将咨询 HTTP 缓存的哪些情况的设置值。它可以是以下之一:imports
、all
或none
。 ServiceWorkerRegistration.waiting
只读-
返回一个状态为
installed
的服务工作者。最初将其设置为null
。
实例方法
也继承自其父接口EventTarget
的方法。
ServiceWorkerRegistration.getNotifications()
-
返回从当前来源通过当前服务工作者注册创建的通知的列表,按创建顺序排列。
ServiceWorkerRegistration.showNotification()
-
显示具有请求标题的通知。
ServiceWorkerRegistration.unregister()
-
注销服务工作者注册并返回一个
Promise
。服务工作者将在注销之前完成所有正在进行的操作。 ServiceWorkerRegistration.update()
-
检查服务器是否有服务工作者的更新版本,但不咨询缓存。
事件
updatefound
-
只要
ServiceWorkerRegistration.installing
属性获取一个新的服务工作者,就会触发该事件。
示例
在此示例中,代码首先检查浏览器是否支持服务工作者,如果支持,则注册一个服务工作者。接下来,它添加了一个updatefound
监听器,在该监听器中,它使用服务工作者注册来监听服务工作者状态的进一步更改。如果服务工作者自上次注册以来没有更改,则不会触发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 |
浏览器兼容性
BCD 表格仅在浏览器中加载