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 |
瀏覽器相容性
載入中…