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 |
瀏覽器相容性
載入中…