NDEFRecord: Methode toRecords()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.
Die Methode toRecords()
der NDEFRecord
Schnittstelle konvertiert NDEFRecord.data
in eine Sequenz von Datensätzen basierend auf NDEFRecord.recordType
und gibt das Ergebnis zurück. Dies ermöglicht das Parsen von Nutzlasten von Datentypen, die möglicherweise verschachtelte Datensätze enthalten, wie z.B. Smart-Poster- und externe Typ-Datensätze.
Syntax
toRecords()
Parameter
Keine.
Rückgabewert
Eine Liste von NDEFRecord
.
Ausnahmen
NotSupported
DOMException
-
Gibt an, dass der User Agent nicht weiß, wie diese Kombination aus
NDEFRecord.data
undNDEFRecord.recordType
zu parsen ist.
Beispiele
Ein externes Datenelement mit einer NDEF-Nachricht als Nutzlast lesen
Das Beispiel verwendet externe Typ-Datensätze, um anwendungsspezifische Datensätze zu erstellen. Diese Datensätze können eine NDEFMessage
als Nutzlast enthalten, mit ihren eigenen NDEFRecord
Objekten, einschließlich lokaler Typen, die im Kontext der Anwendung verwendet werden. Beachten Sie, dass der Smart-Poster-Datentyp ebenfalls eine NDEF-Nachricht als Nutzlast enthält.
Da NDEF keine Garantie für die Reihenfolge der Datensätze gibt, kann es nützlich sein, einen externen Typ-Datensatz mit einer NDEF-Nachricht als Nutzlast zu verwenden, um verwandte Daten zu kapseln.
Dieses Beispiel zeigt, wie man einen externen Datensatz für soziale Beiträge liest, der eine NDEFMessage
enthält, in der sich ein Textdatensatz und ein Datensatz mit dem lokalen Typ „act“ (Aktion) befinden, mit einer Definition, die von Smart Poster entlehnt, aber im lokalen Anwendungskontext verwendet wird.
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;
}
};
Spezifikationen
Specification |
---|
Web NFC API # dom-ndefrecord-torecords |
Browser-Kompatibilität
BCD tables only load in the browser