ServiceWorkerRegistration

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在一些或所有支持的浏览器中可用。

注意:此功能在Web Workers中可用。

ServiceWorkerRegistrationService Worker API中的一个接口,它表示服务工作者注册。您注册一个服务工作者来控制一个或多个共享相同原点的页面。

服务工作者注册的生存期超出了在相应的服务工作者客户端的生存期内代表它们的ServiceWorkerRegistration对象的生存期。浏览器维护一个活动ServiceWorkerRegistration对象的持久列表。

EventTarget ServiceWorkerRegistration

实例属性

也继承自其父接口EventTarget的属性。

ServiceWorkerRegistration.active 只读

返回一个状态为activatingactivated的服务工作者。最初将其设置为null。如果客户端的 URL 位于注册范围(首次调用ServiceWorkerContainer.register时设置的scope选项)内,则活动工作者将控制Client

ServiceWorkerRegistration.backgroundFetch 只读 实验性

返回对BackgroundFetchManager对象的引用,该对象管理后台获取操作。

ServiceWorkerRegistration.cookies 只读 实验性

返回对CookieStoreManager接口的引用,该接口允许订阅和取消订阅 Cookie 更改事件。

ServiceWorkerRegistration.index 只读 实验性

返回对ContentIndex接口的引用,用于管理离线查看的索引内容。

ServiceWorkerRegistration.installing 只读

返回一个状态为installing的服务工作者。最初将其设置为null

ServiceWorkerRegistration.navigationPreload 只读

返回与当前服务工作者注册相关的NavigationPreloadManager的实例。

ServiceWorkerRegistration.paymentManager 只读 实验性

返回支付应用程序的PaymentManager实例,用于管理各种支付应用程序功能。

ServiceWorkerRegistration.periodicSync 只读 实验性

返回对PeriodicSyncManager接口的引用,该接口允许注册在特定间隔运行的任务。

ServiceWorkerRegistration.pushManager 只读

返回对PushManager接口的引用,用于管理推送订阅,包括订阅、获取活动订阅以及访问推送权限状态。

ServiceWorkerRegistration.scope 只读

返回一个字符串,表示定义服务工作者注册范围的 URL;也就是说,服务工作者可以控制的 URL 范围。

ServiceWorkerRegistration.sync 只读

返回对SyncManager接口的引用,该接口管理后台同步过程。

ServiceWorkerRegistration.updateViaCache 只读

返回用于确定浏览器在尝试更新服务工作者或通过importScripts()导入的任何脚本时将咨询 HTTP 缓存的哪些情况的设置值。它可以是以下之一:importsallnone

ServiceWorkerRegistration.waiting 只读

返回一个状态为installed的服务工作者。最初将其设置为null

实例方法

也继承自其父接口EventTarget的方法。

ServiceWorkerRegistration.getNotifications()

返回从当前来源通过当前服务工作者注册创建的通知的列表,按创建顺序排列。

ServiceWorkerRegistration.showNotification()

显示具有请求标题的通知。

ServiceWorkerRegistration.unregister()

注销服务工作者注册并返回一个Promise。服务工作者将在注销之前完成所有正在进行的操作。

ServiceWorkerRegistration.update()

检查服务器是否有服务工作者的更新版本,但不咨询缓存。

事件

updatefound

只要ServiceWorkerRegistration.installing属性获取一个新的服务工作者,就会触发该事件。

示例

在此示例中,代码首先检查浏览器是否支持服务工作者,如果支持,则注册一个服务工作者。接下来,它添加了一个updatefound监听器,在该监听器中,它使用服务工作者注册来监听服务工作者状态的进一步更改。如果服务工作者自上次注册以来没有更改,则不会触发updatefound事件。

js
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 表格仅在浏览器中加载

另请参见