WorkerGlobalScope

Baseline 广泛可用 *

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

* 此特性的某些部分可能存在不同级别的支持。

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

WorkerGlobalScope 接口是 Web Workers API 的一部分,代表任何 worker 的作用域。Worker 没有浏览上下文;这个作用域包含通常由 Window 对象传达的信息 — 在这种情况下,包括事件处理器、控制台或关联的 WorkerNavigator 对象。每个 WorkerGlobalScope 都有自己的事件循环。

此接口通常由每种 worker 类型进行专门化:DedicatedWorkerGlobalScope 用于专用 worker,SharedWorkerGlobalScope 用于共享 worker,ServiceWorkerGlobalScope 用于 ServiceWorkerself 属性返回每个上下文的专用作用域。

EventTarget WorkerGlobalScope

实例属性

此接口继承自 EventTarget 接口的属性。

WorkerGlobalScope.caches 只读 安全上下文

返回与当前上下文关联的 CacheStorage 对象。该对象启用离线使用资产存储、生成自定义请求响应等功能。

WorkerGlobalScope.crossOriginIsolated 只读

返回一个布尔值,指示网站是否处于跨源隔离状态。

WorkerGlobalScope.crypto 只读

返回与全局对象关联的 Crypto 对象。

WorkerGlobalScope.fonts 只读

返回与 worker 关联的 FontFaceSet

WorkerGlobalScope.indexedDB 只读

提供了一种机制,供 worker 异步访问索引数据库的功能;返回一个 IDBFactory 对象。

WorkerGlobalScope.isSecureContext 只读

返回一个布尔值,指示当前上下文是否安全(true)或不安全(false)。

WorkerGlobalScope.location 只读

返回与 worker 关联的 WorkerLocation。它是一个特定的位置对象,大部分是浏览作用域的 Location 的子集,但适用于 worker。

WorkerGlobalScope.navigator 只读

返回与 worker 关联的 WorkerNavigator。它是一个特定的 navigator 对象,大部分是浏览作用域的 Navigator 的子集,但适用于 worker。

WorkerGlobalScope.origin 只读

返回全局对象的 origin(源),并将其序列化为字符串。

WorkerGlobalScope.performance 只读

返回与 worker 关联的 Performance 对象。只有 Performance 接口的属性和方法的一部分可供 worker 使用。

WorkerGlobalScope.scheduler 只读

返回与当前上下文关联的 Scheduler 对象。这是使用 Prioritized Task Scheduling API 的入口点。

WorkerGlobalScope.trustedTypes 只读

返回与全局对象关联的 TrustedTypePolicyFactory 对象,这是使用 Trusted Types API 的入口点。

WorkerGlobalScope.self 只读

返回对 WorkerGlobalScope 本身的引用。大多数情况下,它是一个特定作用域,例如 DedicatedWorkerGlobalScopeSharedWorkerGlobalScopeServiceWorkerGlobalScope

实例方法

此接口继承自 EventTarget 接口的方法。

WorkerGlobalScope.atob()

解码使用 base-64 编码的数据字符串。

WorkerGlobalScope.btoa()

从二进制数据字符串创建 base-64 编码的 ASCII 字符串。

WorkerGlobalScope.clearInterval()

取消使用 WorkerGlobalScope.setInterval() 设置的重复执行。

WorkerGlobalScope.clearTimeout()

取消使用 WorkerGlobalScope.setTimeout() 设置的延迟执行。

WorkerGlobalScope.createImageBitmap()

接受各种不同的图像源,并返回一个 Promise,该 Promise 解析为 ImageBitmap。可选地,源会被裁剪到以 (sx, sy) 为起点、宽度为 sw、高度为 sh 的像素矩形区域。

WorkerGlobalScope.dump() 已弃用 非标准

允许您将消息写入 stdout — 即,写入您的终端。这与 Firefox 的 window.dump 相同,但适用于 worker。

WorkerGlobalScope.fetch()

开始从网络获取资源的进程。

WorkerGlobalScope.importScripts()

将一个或多个脚本导入到 worker 的作用域中。您可以指定任意数量的脚本,用逗号分隔。例如:importScripts('foo.js', 'bar.js');

WorkerGlobalScope.queueMicrotask()

排队等待一个微任务,以便在控制权安全返回到浏览器的事件循环之前执行。

WorkerGlobalScope.setInterval()

安排一个函数在每经过给定毫秒数时执行。

WorkerGlobalScope.setTimeout()

安排一个函数在给定时间内执行。

WorkerGlobalScope.structuredClone()

使用 结构化克隆算法 为给定值创建 深层克隆

WorkerGlobalScope.reportError()

报告脚本中的错误,模拟未捕获的异常。

事件

error

发生错误时触发。

languagechange

当用户的首选语言发生变化时,在全局/worker 作用域对象上触发。

offline

当浏览器失去网络访问权限且 navigator.onLine 的值切换为 false 时触发。

online

当浏览器重新获得网络访问权限且 navigator.onLine 的值切换为 true 时触发。

rejectionhandled

在已处理的 Promise 拒绝事件上触发。

securitypolicyviolation

内容安全策略 被违反时触发。

unhandledrejection

在未处理的 Promise 拒绝事件上触发。

示例

您不会在代码中直接访问 WorkerGlobalScope;然而,它的属性和方法会被更具体的全局作用域继承,例如 DedicatedWorkerGlobalScopeSharedWorkerGlobalScope。例如,您可以使用以下两行代码导入另一个脚本到 worker 中,并打印出 worker 作用域的 navigator 对象的内容:

js
importScripts("foo.js");
console.log(navigator);

注意: 由于 worker 脚本的全局作用域实际上是您正在运行的 worker 的全局作用域(DedicatedWorkerGlobalScope 或其他),并且所有 worker 全局作用域都继承自 WorkerGlobalScope 的方法、属性等,因此您可以运行上面的代码行,而无需指定父对象。

规范

规范
HTML
# the-workerglobalscope-common-interface

浏览器兼容性

另见