NDEFReader

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

NDEFReader 介面是 Web NFC API 的一部分,用於在相容的 NFC 裝置(例如支援 NDEF 的 NFC 標籤)位於讀取器的磁感應場內時,讀取和寫入資料到這些裝置。

EventTarget NDEFReader

建構函式

NDEFReader() 實驗性功能

返回一個新的 NDEFReader 物件。

例項方法

NDEFReader 介面繼承了其父介面 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
# the-ndefreader-object

瀏覽器相容性