首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WebAssembly.module.customSections

这是一项 实验技术

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

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

语法

代码语言:javascript
复制
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文件,例如:

代码语言:javascript
复制
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对象。

代码语言:javascript
复制
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]);
? };
});

规范

Specification

Status

Comment

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

Draft

Initial draft definition.

浏览器兼容性

Feature

Chrome

Edge

Firefox

Internet Explorer

Opera

Safari

Basic Support

57

16

522

No

44

11

Feature

Android

Chrome for Android

Edge mobile

Firefox for Android

IE mobile

Opera Android

iOS Safari

Basic Support

57

57

(Yes)1

522

No

?

11

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com