使用 HTML、CSS 和 JavaScript 结合调用手机摄像头的API(如getUserMedia)以及条形码识别的 JavaScript 库(例如 QuaggaJS)来完成。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Barcode Scanner</title>
<style>
#barcodeScanner {
width: 100%;
height: auto;
}
</style>
</head>
<body>
<div id="barcodeScanner"></div>
<div id="barcodeResult"></div>
<script>
// 获取摄像头视频流
navigator.mediaDevices.getUserMedia({ video: { facingMode: "environment" } })
.then(function (stream) {
var video = document.createElement('video');
video.srcObject = stream;
video.setAttribute('autoplay', '');
video.setAttribute('playsinline', '');
video.style.width = '100%';
document.getElementById('barcodeScanner').appendChild(video);
// 使用QuaggaJS进行条形码扫描
Quagga.init({
inputStream: {
name: "Live",
type: "LiveStream",
target: video
},
decoder: {
readers: ["ean_reader"]
}
}, function(err) {
if (err) {
console.log(err);
return;
}
Quagga.start();
});
// 监听识别结果
Quagga.onDetected(function(result) {
var code = result.codeResult.code;
document.getElementById('barcodeResult').innerText = 'Detected barcode: ' + code;
});
})
.catch(function (err) {
console.error('Error accessing the camera: ', err);
});
</script>
<script src="https://cdn.jsdelivr.net/npm/quagga"></script>
</body>
</html>
有网络连接,以加载 QuaggaJS 库。您也可以将库下载到本地并引用它。另外,由于涉及到调用摄像头,这段代码通常需要在 HTTPS 页面上才能正常工作。