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

js
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 und NDEFRecord.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.

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;
  }
};

Spezifikationen

Specification
Web NFC API
# dom-ndefrecord-torecords

Browser-Kompatibilität

BCD tables only load in the browser