NDEFReader:scan() 方法

可用性有限

此功能不是基线,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中可用。

实验性:这是一个实验性技术
在生产环境中使用此功能之前,请仔细查看浏览器兼容性表

NDEFReader 接口的scan() 方法激活读取设备并返回一个Promise,该方法在安排 NFC 标签读取操作时解析,或者在遇到硬件或权限错误时拒绝。如果之前未授予“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 适配器或无法建立连接,则返回。

示例

处理扫描错误

此示例显示当扫描 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 API
# dom-ndefreader-scan

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。