我正在尝试创建一个移动应用,用户将在其中扫描唯一的QR码,然后程序应执行检查以确保扫描了正确的QR码(而不是随机的QR码),并且正确的QR扫描代码应调用API。我找到了一个适用于https://www.sitepoint.com/create-qr-code-reader-mobile-website/手机上的javascript qr扫描仪。通过访问设备的相机并扫描QR码,所有这些工作都非常完美,但是我在如何检查已扫描的正确QR码方面苦苦挣扎。为了测试“正确的” QR码,它只是将其转换为字符串“ hello”。
我尝试使用alert(res)查找QR解码点。当我尝试使用if语句将解码后的QR与等同于“ hello”的变量进行比较时,QR扫描器将停止工作。
完整代码可在https://www.sitepoint.com/create-qr-code-reader-mobile-website/
查看这是解码QR图像的部分。
function openQRCamera(node) {
var reader = new FileReader();
reader.onload = function() {
node.value = "";
qrcode.callback = function(res) {
if(res instanceof Error) {
alert("No QR code found. Please make sure the QR code is within the camera's frame and try again.");
} else {
node.parentNode.previousElementSibling.value = res; }
alert(res)
};
qrcode.decode(reader.result);
};
reader.readAsDataURL(node.files[0]);
}
我说Alert(res)的部分是我认为QR图像被解码的地方,我尝试过各种如果语句无法使它起作用的情况,那么任何人都可以帮忙。
答案 0 :(得分:1)
使用来自sitepoint.com的以上链接,并按照本教程进行操作,我没有遇到返回响应的任何问题。尝试检查它是否像这样工作:
function openQRCamera(node) {
var reader = new FileReader();
reader.onload = function() {
node.value = "";
qrcode.callback = function(res) {
if(res instanceof Error) {
alert("Failed to scan QR code.");
} else {
console.log("Scanned new code: " + res.trim());
if (res.trim() === "hello") {
alert("Correct code!");
} else {
alert("Incorrect code!");
}
}
};
qrcode.decode(reader.result);
};
reader.readAsDataURL(node.files[0]);
}
function showQRIntro() {
return confirm("Please scan the code");
}
我用这个image作为正确代码的示例,this image作为不正确代码的示例。
希望一切能够清除,祝你好运:)