NDEFRecord: toRecords() method
The toRecords()
method of the NDEFRecord
interface converts NDEFRecord.data
to a sequence of records based on NDEFRecord.recordType
, and returns the result. This allows parsing the payloads of record types which may contain nested records, such as smart poster and external type records.
Syntax
Parameters
Return value
Exceptions
NotSupported
DOMException
-
Indicates that the User Agent does not know how to parse this combination of NDEFRecord.data
and NDEFRecord.recordType
.
Examples
Read an external record with an NDEF message as payload
The example uses external type records to create application-defined records. These records may contain an NDEFMessage
as payload, with its own NDEFRecord
objects, including local types that are used in the context of the application. Notice that the smart poster record type also contains an NDEF message as payload.
Because NDEF gives no guarantee on the ordering of records, using an external type record with an NDEF message as payload can be useful for encapsulating related data.
This example shows how to read an external record for social posts, which contains an NDEFMessage
, containing a text record and a record with the local type "act" (action), with a definition borrowed from smart poster, but used in local application context.
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:
console.log(`Post "${text}" to timeline`);
break;
case 1:
console.log(`Save "${text}" as a draft`);
break;
case 2:
console.log(`Show editable post with "${text}"`);
break;
}
};
Specifications
Browser compatibility
|
Desktop |
Mobile |
|
Chrome |
Edge |
Firefox |
Internet Explorer |
Opera |
Safari |
WebView Android |
Chrome Android |
Firefox for Android |
Opera Android |
Safari on IOS |
Samsung Internet |
toRecords |
No |
No |
No |
No |
No |
No |
89 |
89 |
No |
63 |
No |
15.0 |