WebAssembly.validate()

Baseline 廣泛可用 *

此功能已非常成熟,可在多種裝置和瀏覽器版本上使用。自 2017 年 10 月以來,它已在各大瀏覽器中可用。

* 此特性的某些部分可能存在不同級別的支援。

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

瀏覽器相容性

另見