WebAssembly.validate()
Baseline 广泛可用 *
WebAssembly.validate()
静态方法会验证给定的 WebAssembly 二进制代码的 类型化数组,返回该字节是否构成一个有效的 Wasm 模块 (true
) 或否 (false
)。
语法
js
WebAssembly.validate(bufferSource)
WebAssembly.validate(bufferSource, compileOptions)
参数
bufferSource
-
包含待验证的 WebAssembly 二进制代码的 类型化数组 或 ArrayBuffer。
compileOptions
可选-
包含编译选项的对象。此参数包含在
validate()
方法中,以便在存在编译选项时(例如,用于实现功能检测)验证模块。属性可以包括builtins
可选-
一个字符串数组,用于启用在已编译的 Wasm 模块中使用 JavaScript 内置函数。这些字符串定义了您要启用的内置函数。目前唯一可用的值是
"js-string"
,它启用 JavaScript 字符串内置函数。 importedStringConstants
可选-
一个字符串,指定 导入的全局字符串常量 的命名空间。如果您希望在 Wasm 模块中使用导入的全局字符串常量,则需要指定此属性。
返回值
一个布尔值,指定 bufferSource
是否为有效的 Wasm 代码 (true
) 或否 (false
)。
异常
如果 bufferSource
不是 类型化数组 或 ArrayBuffer,则会抛出 TypeError
。
示例
使用 validate
下面的示例(请参阅 validate.html 的 源代码,以及 实时预览)会获取一个 Wasm 模块并将其转换为类型化数组。然后使用 validate()
方法来检查模块是否有效。
js
fetch("simple.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => {
const valid = WebAssembly.validate(bytes);
console.log(
`The given bytes are ${valid ? "" : "not "}a valid Wasm module`,
);
});
使用启用 JavaScript 内建函数和全局字符串导入来验证模块
此示例使用启用了 JavaScript 字符串内建函数和导入的全局字符串常量来验证 Wasm 模块。如果有效,则在控制台记录 "Wasm module valid: true"
,如果无效,则记录 "Wasm module valid: false"
。查看实时运行。
js
const compileOptions = {
builtins: ["js-string"], // Enable JavaScript string builtins
importedStringConstants: "string_constants", // Enable imported global string constants
};
fetch("log-concat.wasm")
.then((response) => response.arrayBuffer())
.then((bytes) => WebAssembly.validate(bytes, compileOptions))
.then((result) => console.log(`Wasm module valid: ${result}`));
规范
规范 |
---|
WebAssembly JavaScript 接口 # dom-webassembly-validate |
浏览器兼容性
加载中…