在线文档教程

WebAssembly.module.customSections

WebAssembly.module.customSections

这是一项 实验技术

在使用此产品之前,请仔细检查浏览器兼容性表。

WebAssembly.customSections()函数返回给定字符串名称中给定模块中所有自定义部分内容的副本。

语法

var custSec = WebAssembly.Module.customSections(module, sectionName

参数

bufferSource一个 类型化数组 或 ArrayBuffer,包含要编译的 .wasm 模块的二进制代码。

返回值

包含ArrayBuffer所有自定义部分匹配内容副本(可能为空)的数组sectionName

异常

如果module不是WebAssembly.Module对象实例,则抛出TypeError

自定义部分

一个主模块由一系列的部分组成。这些部分大多数都是由wasm规范完全指定和验证的,但是模块也可以包含在验证期间被忽略和跳过的自定义部分。(阅读高层次的结构以获取关于部分结构的信息,以及如何区分正常部分(“已知部分”)和自定义部分。)

这为开发人员提供了一种将自定义数据包含在wasm模块中用于其他目的的方法,例如名称custom部分,它允许开发人员为模块中的所有函数和本地名称(如本机构建中的“符号”)提供名称。

请注意,WebAssembly文本格式当前没有为添加新的自定义部分指定的语法; 您可以在从文本格式转换为.wasm的过程中为您的名字添加名称部分。作为wabt工具的一部分提供的wast2wasm命令有一个--debug-names选项 - 在转换过程中指定这个选项以获得名称为custom的.wasm文件,例如:

wast2wasm simple-name-section.was -o simple-name-section.wasm --debug-names

示例

以下示例(请参阅custom-section.html 源代码实例)编译和编译加载的simple-name-section.wasm字节代码。

然后我们用WebAssembly.Module.customSections做一个检查,查看模块实例是否包含一个“名称”自定义部分,通过检查它的length是否大于0.由于在示例中有一个“名称”部分,所以返回一个ArrayBuffer对象。

fetch('simple-name-section.wasm').then(response =>   response.arrayBuffer() ).then(bytes =>   WebAssembly.compile(bytes) ).then(function(mod) {   var nameSections = WebAssembly.Module.customSections(mod, "name"   if (nameSections.length != 0) {     console.log("Module contains a name section"     console.log(nameSections[0]   }; }

规范

SpecificationStatusComment
Web Assembly JavaScript APIThe definition of 'customSections()' in that specification.DraftInitial draft definition.

浏览器兼容性

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support5716522No4411

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support5757(Yes)1522No?11