我正在尝试让 Web NFC 通过Web NFC API工作,但我无法通过错误消息NotAllowedError: NFC permission request denied.
我在 Windows 10 计算机上的 Chrome 89 Dev 上使用它,源代码正在本地运行。
我也尝试过发布在 Internet 上的示例,包括Google 示例,但它返回相同的错误。我不担心它在这一点上是实验性的,因为提到这确实表明它已经成功通过了必要的测试,包括权限。
我正在使用的 HTML/JS 代码如下,并且我已经阅读了规范点 9.3,但我无法理解将其编写为代码,所以是否有一个指导算法可以帮助解决这个?
async function readTag() {
if ("NDEFReader" in window) {
const reader = new NDEFReader();
try {
await reader.scan();
reader.onreading = event => {
const decoder = new TextDecoder();
for (const record of event.message.records) {
consoleLog("Record type: " + record.recordType);
consoleLog("MIME type: " + record.mediaType);
consoleLog("=== data ===\n" + decoder.decode(record.data));
}
}
} catch(error) {
consoleLog(error);
}
} else {
consoleLog("Web NFC is not supported.");
}
}
async function writeTag() {
if ("NDEFWriter" in window) {
const writer = new NDEFWriter();
try {
await writer.write("helloworld");
consoleLog("NDEF message written!");
} catch(error) {
consoleLog(error);
}
} else {
consoleLog("Web NFC is not supported.");
}
}
function consoleLog(data) {
var logElement = document.getElementById('log');
logElement.innerHTML += data + '\n';
};
<!DOCTYPE html>
<html>
<head>
<script src="webnfc.js"></script>
</head>
<body>
<p>
<button onclick="readTag()">Test NFC Read</button>
<button onclick="writeTag()">Test NFC Write</button>
</p>
<pre id="log"></pre>
</body>
</html>