ServiceWorkerGlobalScope
Baseline 廣泛可用 *
注意:此功能僅在 Service Workers 中可用。
ServiceWorkerGlobalScope 介面是 Service Worker API 的一部分,代表了 service worker 的全域性執行上下文。
開發者應注意,ServiceWorker 的狀態在終止/重啟週期之間不會持久化,因此每個事件處理程式都應假設它是以一個乾淨的、預設的全域性狀態被呼叫的。
一旦成功註冊,service worker 在空閒時會被終止以節省記憶體和處理器資源。活動 service worker 會被自動重啟以響應事件,例如 fetch 或 message。
此外,不允許在 service worker 中進行同步請求 — 只能使用非同步請求,例如透過 fetch() 方法發起的請求。
此介面繼承自 WorkerGlobalScope 介面,以及其父介面 EventTarget。
例項屬性
此介面繼承了 WorkerGlobalScope 介面及其父介面 EventTarget 的屬性。
ServiceWorkerGlobalScope.clients只讀-
包含與 service worker 關聯的
Clients物件。 -
返回一個指向與 service worker 關聯的
CookieStore物件的引用。 ServiceWorkerGlobalScope.registration只讀-
包含表示 service worker 註冊的
ServiceWorkerRegistration物件。 ServiceWorkerGlobalScope.serviceWorker只讀-
包含表示 service worker 的
ServiceWorker物件。
例項方法
此介面繼承了 WorkerGlobalScope 介面及其父介面 EventTarget 的方法。
ServiceWorkerGlobalScope.skipWaiting()-
允許當前 service worker 註冊在 service worker 客戶端使用它時,從等待狀態 progression 到活動狀態。
事件
使用 addEventListener() 偵聽此事件,或將事件監聽器分配給此介面的 oneventname 屬性。
activate-
當
ServiceWorkerRegistration獲得一個新的ServiceWorkerRegistration.activeworker 時觸發。 backgroundfetchabort實驗性-
當一個 後臺獲取操作被使用者或應用程式取消時觸發。
backgroundfetchclick實驗性-
當用戶點選 後臺獲取操作的 UI 時觸發。
backgroundfetchfail實驗性-
當 後臺獲取操作中的至少一個請求失敗時觸發。
backgroundfetchsuccess實驗性-
當 後臺獲取操作中的所有請求都成功時觸發。
canmakepayment實驗性-
在支付應用程式的 service worker 上觸發,以檢查其是否已準備好處理付款。具體來說,當商家網站呼叫
PaymentRequest()建構函式時觸發。 contentdelete實驗性-
當
ContentIndex中的一項被移除時觸發。 -
當發生與 service worker 的 cookie 更改訂閱列表匹配的 cookie 更改時觸發。
fetch-
當呼叫
fetch()時觸發。 install-
當
ServiceWorkerRegistration獲得一個新的ServiceWorkerRegistration.installingworker 時觸發。 message-
當收到傳入訊息時觸發。受控頁面可以使用
MessagePort.postMessage()方法向 service worker 傳送訊息。 messageerror-
當傳入訊息無法反序列化時觸發。
notificationclick-
當用戶點選已顯示的通知時觸發。
notificationclose-
當用戶關閉已顯示的通知時觸發。
paymentrequest實驗性-
當透過
PaymentRequest.show()方法在商家網站上啟動支付流程時,在支付應用程式上觸發。 sync-
當從 service worker 客戶端頁面呼叫
SyncManager.register時觸發。同步嘗試會立即進行(如果網路可用),或在網路可用時儘快進行。 periodicsync實驗性-
在註冊
PeriodicSyncManager時指定的週期性間隔觸發。 push-
當收到伺服器推送通知時觸發。
pushsubscriptionchange-
當推送訂閱已失效或即將失效時觸發(例如,當推送服務設定了到期時間時)。
示例
此程式碼片段來自 service worker prefetch 示例(請參閱 prefetch 示例線上演示。) onfetch 事件處理程式偵聽 fetch 事件。當觸發時,程式碼返回一個 promise,該 promise 解析為 Cache 物件中的第一個匹配請求。如果未找到匹配項,程式碼將從網路獲取響應。
程式碼還處理了從 fetch() 操作中丟擲的異常。請注意,HTTP 錯誤響應(例如 404)不會觸發異常。它將返回一個正常的響應物件,其中包含相應的錯誤程式碼。
self.addEventListener("fetch", (event) => {
console.log("Handling fetch event for", event.request.url);
event.respondWith(
caches.match(event.request).then((response) => {
if (response) {
console.log("Found response in cache:", response);
return response;
}
console.log("No response found in cache. About to fetch from network…");
return fetch(event.request).then(
(response) => {
console.log("Response from network is:", response);
return response;
},
(error) => {
console.error("Fetching failed:", error);
throw error;
},
);
}),
);
});
規範
| 規範 |
|---|
| Service Workers # serviceworkerglobalscope-interface |
瀏覽器相容性
載入中…