NDEFReader: scan() 方法

可用性有限

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

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

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

NDEFReader 介面的 scan() 方法用於啟用讀取裝置,並返回一個 Promise。當 NFC 標籤讀取操作被排程時,此 Promise 會被解析;如果遇到硬體或許可權錯誤,則會被拒絕。如果尚未授予 "nfc" 許可權,此方法會觸發一個許可權提示。

語法

js
scan(options)

引數

options 可選

具有以下屬性的物件:

signal

一個 AbortSignal,允許取消此 scan() 操作。

返回值

一個 Promise,在排程 NFC 介面卡的讀取操作後立即解析。

異常

此方法不丟擲異常;相反,它會拒絕返回的 Promise,傳遞一個 DOMException,其 name 為以下之一:

AbortError DOMException

當使用 options 引數中傳遞的 AbortSignal 中止掃描操作時返回。

InvalidStateError DOMException

當已有一個正在進行的掃描時返回。

NotAllowedError DOMException

當此操作的許可權被拒絕時返回。

NotSupportedError DOMException

當沒有與 Web NFC 相容的 NFC 介面卡,或者無法建立連線時返回。

示例

處理掃描錯誤

此示例顯示了當 scan Promise 被拒絕並丟擲 readingerror 時會發生什麼。

js
const ndef = new NDEFReader();
ndef
  .scan()
  .then(() => {
    console.log("Scan started successfully.");
    ndef.onreadingerror = (event) => {
      console.log(
        "Error! Cannot read data from the NFC tag. Try a different one?",
      );
    };
    ndef.onreading = (event) => {
      console.log("NDEF message read.");
    };
  })
  .catch((error) => {
    console.log(`Error! Scan failed to start: ${error}.`);
  });

規範

規範
Web NFC
# dom-ndefreader-scan

瀏覽器相容性