NDEFRecord: toRecords() 方法
NDEFRecord 接口的 toRecords() 方法根据 NDEFRecord.recordType 将 NDEFRecord.data 转换为一系列记录,并返回结果。这允许解析可能包含嵌套记录的记录类型的有效负载,例如智能海报和外部类型记录。
语法
js
toRecords()
参数
无。
返回值
NDEFRecord 记录列表。
异常
NotSupportedDOMException-
表示用户代理 (User Agent) 不知道如何解析
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 # dom-ndefrecord-torecords |
浏览器兼容性
加载中…