我目前正在尝试为我的Web应用程序创建一个二维码阅读器,但我无法确定我所采用的函数的输出位置。
我在这里使用本教程中的QR Reader:
https://www.sitepoint.com/create-qr-code-reader-mobile-website/
到目前为止,我可以打开手机的摄像头并拍摄二维码的照片。然后,该函数将处理图像,如果是有效的二维码,则在文本框中向我显示加密的字符串/链接。
下面是我在HTML上使用的代码:
<main class="content-wrapper">
<div class="container-fluid">
<input type=text class=qrcode-text>
<label class=qrcode-text-btn>
<input type=file accept="image/*"
capture=environment
onchange="openQRCamera(this); read();"
tabindex=-1>
</label>
<script>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;
}
};
qrcode.decode(reader.result);
};
reader.readAsDataURL(node.files[0]);
}
</script>
<script src="https://rawgit.com/sitepoint-editors/jsqrcode/master/src/qr_packed.js">
</script>因此,这里的一切都在按预期工作。但是往前看,我想让我的二维码根据QR阅读器产生的字符串执行特定的操作。
例如,如果二维码捕获到“获胜者”,我希望弹出一个警报,祝贺用户。
然而,我没有成功地找到输出。
发布于 2019-10-22 16:04:42
我假设二维码的输出值是在qrcode的回调函数中产生的,并作为res参数传递,如下所示:
qrcode.callback = function (res) {
此外,从您给出的网站上,它声明当读取二维码完成时,它将运行回调函数:
一旦FileReader读取完文件,我们就会给QR库分配一个回调函数,并将文件内容发送给该库的解码函数。该库将调用我们的回调,并返回一个错误对象或以字符串形式返回二维码的值。
当没有错误时,输出将是res参数。我已经修改了您的代码,如果读取成功,只需在更改文本值之前添加alert(res)即可弹出该值:
<main class="content-wrapper">
<div class="container-fluid">
<input type=text class=qrcode-text>
<label class=qrcode-text-btn>
<input type=file accept="image/*"
capture=environment
onchange="openQRCamera(this); read();"
tabindex=-1>
</label>
<script>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 {
alert(res);
node.parentNode.previousElementSibling.value = res;
}
};
qrcode.decode(reader.result);
};
reader.readAsDataURL(node.files[0]);
}
</script>
<script src="https://rawgit.com/sitepoint-editors/jsqrcode/master/src/qr_packed.js">
</script>https://stackoverflow.com/questions/58499461
复制相似问题