Limited availability
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 write()
Methode des NDEFReader
Interfaces versucht, eine NDEF-Nachricht auf ein Tag zu schreiben und gibt ein Promise
zurück, das entweder aufgelöst wird, wenn eine Nachricht auf das Tag geschrieben wurde, oder abgelehnt wird, falls ein Hardware- oder Berechtigungsfehler auftritt. Diese Methode löst eine Berechtigungsausforderung aus, wenn die Berechtigung "nfc" nicht zuvor erteilt wurde.
write(message)
write(message, options)
Parameter
message
Die Nachricht, die geschrieben werden soll, entweder ein String, ein ArrayBuffer
, ein TypedArray
, ein DataView
oder ein Array von Datensätzen. Ein Datensatz hat die folgenden Mitglieder:
data
Optional
Beinhaltet die zu übertragenden Daten, ein String, ein ArrayBuffer
, ein TypedArray
, ein DataView
oder ein Array von verschachtelten Datensätzen.
encoding
Optional
Ein String, der die Kodierung des Datensatzes angibt.
id
Optional
Eine vom Entwickler definierte Kennung für den Datensatz.
lang
Optional
Ein gültiger Sprach-Tag gemäà RFC 5646: Tags for Identifying Languages (auch bekannt als BCP 47).
mediaType
Optional
Ein gültiger MIME-Typ.
recordType
Ein String, der den Typ der im data
gespeicherten Daten angibt. Es muss einer der folgenden Werte sein:
"absolute-url"
Eine absolute URL zu den Daten.
"empty"
Ein leerer NDEFRecord
.
"mime"
Ein gültiger MIME-Typ.
"smart-poster"
Ein Smartposter gemäà der NDEF-SMARTPOSTER Spezifikation.
"text"
Text gemäà der NDEF-TEXT Spezifikation.
"unknown"
Der Typ des Datensatzes ist nicht bekannt.
"URL"
Eine URL gemäà der NDEF-URI Spezifikation.
options
Optional
Ein Objekt mit folgenden Eigenschaften:
overwrite
Ein boolescher Wert, der angibt, ob vorhandene Datensätze überschrieben werden sollen, falls solche existieren.
signal
Optional
Ein AbortSignal
, das das aktuelle Schreibvorgang abbrechen lässt.
Ein Promise
, das entweder aufgelöst wird, wenn eine Nachricht auf das Tag geschrieben wurde, oder abgelehnt wird, falls ein Hardware- oder Berechtigungsfehler auftritt.
Diese Methode wirft keine Ausnahmen; stattdessen wird das zurückgegebene Promise abgelehnt und ein DOMException
übergeben, dessen name
einer der folgenden ist:
AbortError
Der Scan-Vorgang wurde mit dem im options
Argument übergebenen AbortSignal
abgebrochen.
NotAllowedError
Die Berechtigung für diesen Vorgang wurde abgelehnt oder overwrite
ist false
und es sind bereits Datensätze auf dem Tag vorhanden.
NotSupportedError
Es gibt keinen NFC-Adapter, der mit Web NFC kompatibel ist, oder der verfügbare NFC-Adapter unterstützt das Senden von Nachrichten nicht, oder die Verbindung kann nicht hergestellt werden.
NotReadableError
Der UA darf nicht auf den zugrunde liegenden NFC-Adapter zugreifen (z.B. aufgrund der Benutzereinstellung).
NetworkError
Die Ãbertragung schlug fehl, nachdem sie bereits begonnen hatte (z.B. wurde das Tag vom Leser entfernt).
Das folgende Beispiel zeigt, wie ein String auf ein NFC-Tag geschrieben wird und wie auftretende Fehler verarbeitet werden.
const ndef = new NDEFReader();
ndef
.write("Hello World")
.then(() => {
console.log("Message written.");
})
.catch((error) => {
console.log(`Write failed :-( try again: ${error}.`);
});
Eine URL schreiben
Das folgende Beispiel zeigt, wie ein oben beschriebener Datensatz auf ein NFC-Tag geschrieben wird und wie auftretende Fehler verarbeitet werden.
const ndef = new NDEFReader();
try {
await ndef.write({
records: [{ recordType: "url", data: "http://example.com/" }],
});
} catch {
console.log("Write failed :-( try again.");
}
Ein Schreiben mit einem Timeout planen
Es ist manchmal nützlich, eine Zeitbegrenzung für einen Schreibvorgang festzulegen. Zum Beispiel bitten Sie den Benutzer, ein Tag zu berühren, aber innerhalb einer bestimmten Zeitspanne wird kein Tag gefunden, dann läuft die Zeit ab.
const ndef = new NDEFReader();
ndef.onreading = (event) => console.log("We read a tag!");
function write(data, { timeout } = {}) {
return new Promise((resolve, reject) => {
const controller = new AbortController();
controller.signal.onabort = () =>
reject(new Error("Time is up, bailing out!"));
setTimeout(() => controller.abort(), timeout);
ndef.addEventListener(
"reading",
(event) => {
ndef.write(data, { signal: controller.signal }).then(resolve, reject);
},
{ once: true },
);
});
}
await ndef.scan();
try {
// Let's wait for 5 seconds only.
await write("Hello World", { timeout: 5_000 });
} catch (err) {
console.error("Something went wrong", err);
} finally {
console.log("We wrote to a tag!");
}
Spezifikationen Browser-Kompatibilität
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4