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

浏览器兼容性