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 |
浏览器兼容性
加载中…