NDEFRecord:toRecords() 方法
toRecords()
方法是 NDEFRecord
接口的方法,它根据 NDEFRecord.recordType
将 NDEFRecord.data
转换为一系列记录,并返回结果。这允许解析可能包含嵌套记录的记录类型的有效负载,例如智能海报和外部类型记录。
语法
js
toRecords()
参数
无。
返回值
一个 NDEFRecord
列表。
异常
NotSupported
DOMException
-
指示 用户代理 不知道如何解析
NDEFRecord.data
和NDEFRecord.recordType
的这种组合。
示例
读取有效负载为 NDEF 消息的外部记录
此示例使用外部类型记录来创建应用程序定义的记录。这些记录可能包含一个 NDEFMessage
作为有效负载,以及它自己的 NDEFRecord
对象,包括在应用程序上下文中使用的本地类型。请注意,智能海报记录类型也包含一个 NDEF 消息作为有效负载。
由于 NDEF 对记录的排序没有保证,因此使用带有 NDEF 消息作为有效负载的外部类型记录对于封装相关数据非常有用。
此示例演示如何读取社交帖子类型的外部记录,该记录包含一个 NDEFMessage
,其中包含一个文本记录和一个本地类型为“act”(操作)的记录,其定义借鉴自智能海报,但在本地应用程序上下文中使用。
js
const ndefReader = new NDEFReader();
await ndefReader.scan();
ndefReader.onreading = (event) => {
const externalRecord = event.message.records.find(
(record) => record.type === "example.com:smart-poster",
);
let action, text;
for (const record of externalRecord.toRecords()) {
if (record.recordType === "text") {
const decoder = new TextDecoder(record.encoding);
text = decoder.decode(record.data);
} else if (record.recordType === ":act") {
action = record.data.getUint8(0);
}
}
switch (action) {
case 0: // do the action
console.log(`Post "${text}" to timeline`);
break;
case 1: // save for later
console.log(`Save "${text}" as a draft`);
break;
case 2: // open for editing
console.log(`Show editable post with "${text}"`);
break;
}
};
规范
规范 |
---|
Web NFC API # dom-ndefrecord-torecords |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。