javascript - javascript ndefREADER 不会自动加载
问题描述
首先,我不得不说这是我在堆栈上的第一个问题;)
我正在尝试在我的测试网络上通过 NFC 实现读取,但我不知道为什么,ndefReader 在启动时不起作用,我必须按下网络上的任何字段才能加载它(或请求许可)。
但是,如果我写了一些警报来检查为什么它在启动时没有达到功能,它可以工作!!!(当然,它之前显示警报)。我不知道当我接受警报时,我是否正在与网络交互,这就是它起作用的原因,但无论如何,我不知道为什么会发生这种情况(我需要在开始之前单击任何地方)。
function iniciar() {
document.getElementById("input1").focus();
//alert("test before"); <--- IF i remove this, it doesnt works
document.getElementById("input1").addEventListener("blur", async () => {
try{
const ndef = new NDEFReader();
alert("before wait");
await ndef.scan();
alert("after wait");
ndef.addEventListener("readingerror", () => {
alert("Argh! Cannot read data from the NFC tag. Try another one?");
});
ndef.addEventListener("reading", ({ message, serialNumber }) => {
alert(`> Serial Number: ${serialNumber}`);
alert(`> Records: (${message.records.length})`);
});
} catch (error) {
alert("Argh! " + error);
}
},false);
解决方案
要扫描和写入 NFC 标签,您必须在处理用户手势时首先请求“nfc”权限(例如,单击按钮,或者在您的情况下为“alert”调用)。处理后,如果之前未授予访问权限,则 NDEFReader scan() 和 write() 方法会触发用户提示。
查看https://web.dev/nfc/#security-and-permissions了解更多信息。
希望https://googlechrome.github.io/samples/web-nfc/示例也能帮助您。
scanButton.addEventListener("click", async () => {
console.log("User clicked scan button");
try {
const ndef = new NDEFReader();
await ndef.scan();
console.log("> Scan started");
ndef.addEventListener("readingerror", () => {
console.log("Argh! Cannot read data from the NFC tag. Try another one?");
});
ndef.addEventListener("reading", ({ message, serialNumber }) => {
console.log(`> Serial Number: ${serialNumber}`);
console.log(`> Records: (${message.records.length})`);
});
} catch (error) {
console.log("Argh! " + error);
}
});
推荐阅读
- sql - 在 where 子句中避免 coalesce() 或 case
- javascript - 搜索文本修剪脚本后 livewire 不起作用“...查看更多”
- github-pages - 如何获取 gh 页面的下拉菜单?
- node.js - 为什么 Eclipse 需要 node.js?
- python - 同时运行 asyncio bot 到 Tkinter GUI
- python - 'int' 对象不是 python3 上的可调用问题
- android - 参数必须是数组
- c# - 将 params 数组作为每个单独的参数传递
- docker - PyTorch:NVIDIA NGC 映像还是 Docker Hub 映像?
- node.js - 如何在 rxjs 中等待 lambda 函数的结果