Worklet: addModule() 方法

Baseline 已广泛支持

此特性已得到良好支持,可在多种设备和浏览器版本上使用。自 2021 年 4 月起,所有浏览器均已支持此特性。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

addModule() 方法是 Worklet 接口的一部分,它加载给定 JavaScript 文件中的模块并将其添加到当前 Worklet

语法

js
addModule(moduleURL)
addModule(moduleURL, options)

参数

moduleURL

一个 String,包含要添加的模块所在的 JavaScript 文件的 URL。

options 可选

包含以下选项之一的对象:

credentials

一个 Request.credentials 值,指示在加载模块时是否发送凭据(例如,cookie 和 HTTP 认证)。可以是 "omit""same-origin""include" 之一。默认为 "same-origin"。另请参阅 Request.credentials

返回值

一个 Promise,在给定 URL 的模块添加完成后解析。此 promise 不返回任何值。

异常

如果 addModule() 失败,它会拒绝 promise,并向拒绝处理程序提供以下错误之一。

AbortError DOMException

指定的脚本无效或无法加载。

SyntaxError DOMException

指定的 moduleURL 无效。

示例

AudioWorklet 示例

js
const audioCtx = new AudioContext();
const audioWorklet = audioCtx.audioWorklet;
audioWorklet.addModule("modules/bypassFilter.js", {
  credentials: "omit",
});

PaintWorklet 示例

js
CSS.paintWorklet.addModule(
  "https://mdn.github.io/houdini-examples/cssPaint/intro/worklets/hilite.js",
);

一旦脚本被添加到 paint worklet,CSS paint() 函数就可以用来包含由 worklet 创建的图像。

css
@supports (background-image: paint(id)) {
  h1 {
    background-image: paint(hollow-highlights, filled, 3px);
  }
}

规范

规范
HTML
# dom-worklet-addmodule-dev

浏览器兼容性