NDEFReader
NDEFReader
是 Web NFC API 的一个接口,用于从兼容的 NFC 设备读取数据并写入数据到这些设备,例如支持 NDEF 的 NFC 标签,当这些设备位于读卡器的磁感应场中时。
构造函数
NDEFReader()
实验性-
返回一个新的
NDEFReader
对象。
实例方法
NDEFReader
接口继承了 EventTarget
的方法,EventTarget
是其父接口。
NDEFReader.scan()
实验性-
激活一个读取设备并返回一个
Promise
,该 Promise 在 NFC 标签读取操作计划好时解析,或者在遇到硬件错误或权限错误时拒绝。如果“nfc”权限尚未授予,此方法将触发权限提示。 NDEFReader.write()
实验性-
尝试将 NDEF 消息写入标签并返回一个
Promise
,该 Promise 在消息已写入标签时解析,或者在遇到硬件错误或权限错误时拒绝。如果“nfc”权限尚未授予,此方法将触发权限提示。
事件
继承其父接口 EventTarget
的事件。
reading
实验性-
当从兼容的 NFC 设备获得新读数时触发。
readingerror
实验性-
当标签位于读取设备附近,但无法读取时触发。
示例
处理写入时的初始读取
以下示例展示了如何协调常见的读取处理程序和专门用于单次写入的处理程序。为了写入,需要找到标签并读取。这使你能够检查它是否实际上是你想要写入的标签。因此,建议你在读取事件中调用 write()
。
js
const ndef = new NDEFReader();
let ignoreRead = false;
ndef.onreading = (event) => {
if (ignoreRead) {
return; // write pending, ignore read.
}
console.log("We read a tag, but not during pending write!");
};
function write(data) {
ignoreRead = true;
return new Promise((resolve, reject) => {
ndef.addEventListener(
"reading",
(event) => {
// Check if we want to write to this tag, or reject.
ndef
.write(data)
.then(resolve, reject)
.finally(() => (ignoreRead = false));
},
{ once: true },
);
});
}
await ndef.scan();
try {
await write("Hello World");
console.log("We wrote to a tag!");
} catch (err) {
console.error("Something went wrong", err);
}
规范
规范 |
---|
Web NFC API # the-ndefreader-object |
浏览器兼容性
BCD 表仅在浏览器中加载