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

瀏覽器相容性

另見