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("扫描启动成功。");
    ndef.onreadingerror = (event) => {
      console.log("错误!无法从 NFC 标签读取数据。尝试换一个?");
    };
    ndef.onreading = (event) => {
      console.log("已读取 NDEF 消息。");
    };
  })
  .catch((error) => {
    console.log(`错误!扫描启动失败:${error}`);
  });

规范

Specification
Web NFC API
# dom-ndefreader-scan

浏览器兼容性

BCD tables only load in the browser