NDEFRecord: Methode toRecords()
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
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 vor der Verwendung auf produktiven Webseiten.
Die Methode toRecords() der Schnittstelle NDEFRecord wandelt NDEFRecord.data anhand von NDEFRecord.recordType in eine Folge von Datensätzen um und gibt das Ergebnis zurück. Damit lassen sich die Nutzdaten von Datensatztypen auswerten, die verschachtelte Datensätze enthalten können, beispielsweise Smart-Poster-Datensätze und externe Typdatensätze.
Syntax
toRecords()
Parameter
Keine.
Rückgabewert
Eine Liste von NDEFRecord-Objekten.
Ausnahmen
NotSupportedErrorDOMException-
Gibt an, dass der User-Agent nicht weiß, wie diese Kombination aus
NDEFRecord.dataundNDEFRecord.recordTypeauszuwerten ist.
Beispiele
Einen externen Datensatz mit einer NDEF-Nachricht als Nutzdaten lesen
Das Beispiel verwendet externe Typdatensätze, um anwendungsdefinierte Datensätze zu erstellen. Diese Datensätze können eine NDEFMessage als Nutzdaten enthalten, die ihrerseits NDEFRecord-Objekte umfasst. Dazu gehören lokale Typen, die im Kontext der Anwendung verwendet werden. Beachten Sie, dass auch der Smart-Poster-Datensatztyp eine NDEF-Nachricht als Nutzdaten enthält.
Da NDEF keine Reihenfolge der Datensätze garantiert, kann es nützlich sein, zusammengehörige Daten in einem externen Typdatensatz mit einer NDEF-Nachricht als Nutzdaten zu kapseln.
Dieses Beispiel zeigt, wie ein externer Datensatz für Social-Media-Beiträge gelesen wird. Er enthält eine NDEFMessage mit einem Textdatensatz und einem Datensatz des lokalen Typs „act“ (Aktion). Die Definition dieses Typs ist vom Smart Poster übernommen, wird hier aber im lokalen Anwendungskontext verwendet.
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
| Spezifikation |
|---|
| Web NFC> # dom-ndefrecord-torecords> |