ServiceWorker II
ServiceWorker 全局上下文
ServiceWorkerGlobalScope
接口代表 ServiceWorker 的全局上下文,在 ServiceWorker 内通过 self 全局变量或者 globalThis 全局变量访问(该接口继承自 WorkerGlobalScope
)。
ServiceWorkerGlobalScope
以下代表在 ServiceWorkerGlobalScope
接口本身的属性、方法和事件:
ServiceWorkerGlobalScope
接口的clients
属性代表一个Clients
实例,可用于获取Client
(可执行上下文)实例。ServiceWorkerGlobalScope
接口的registration
属性代表一个ServiceWorkerRegistration
实例,即当前 ServiceWorker 注册的引用。ServiceWorkerGlobalScope
接口的serviceWorker
属性代表一个ServiceWorker
实例,即当前 ServiceWorker 实例的引用。ServiceWorkerGlobalScope
接口的skipWaiting
方法强制当前 ServiceWorker 从等待状态变成激活状态,返回一个该 ServiceWorker 激活后完成的 Promise。其在 install 事件的回调中调用才具有实际意义。
WorkerGlobalScope
以下代表继承自 WorkerGlobalScope
接口的属性、方法和事件:
WorkerGlobalScope
接口的location
属性代表一个WorkerLocation
实例,是Location
的字集。WorkerGlobalScope
接口的navigator
属性代表一个WorkerNavigator
实例,是Navigator
的字集。WorkerGlobalScope
接口的self
属性代表WorkerGlobalScope
接口本身。WorkerGlobalScope
接口的importScripts
方法同步导入一组脚本文件并执行,接受一组参数,代表脚本文件的 URL,其可以为绝对路径或相对路径(相对文档路径)。WorkerGlobalScope
接口的error
事件在 ServiceWorker 内发生脚本错误时触发,返回一个Event
实例。WorkerGlobalScope
接口的languagechange
事件在用户的首选语言更改时触发,返回一个Event
实例。WorkerGlobalScope
接口的online
事件在浏览器获得网络访问权限并且navigator.onLine
值切换到true
时触发,返回一个Event
实例。WorkerGlobalScope
接口的offline
事件在浏览器获得网络访问权限并且navigator.onLine
值切换到false
时触发,返回一个Event
实例。WorkerGlobalScope
接口的rejectionhandled
事件在 ServiceWorker 内处理的 Promise 拒绝事件时触发,返回一个Event
实例。WorkerGlobalScope
接口的unhandledrejection
事件在 ServiceWorker 内未处理的 Promise 拒绝事件时触发,返回一个Event
实例。
以下代表暴露在全局的属性、方法和事件:
1 | self.fonts |
1 | self.atob() |
示例
- https://github.com/skyclouds2001/Frontend-Learning/blob/main/next-learning/service-worker.html
- https://github.com/skyclouds2001/Frontend-Learning/blob/main/next-learning/service-worker.js
类型
1 | interface ServiceWorkerGlobalScope extends WorkerGlobalScope { |
链接
ServiceWorker II
https://skyclouds2001.github.io/2023/09/20/ServiceWorker-II/