安装依赖
html5-qrcode 是一个用于在现代浏览器中进行二维码扫描的 JavaScript 库。它利用 HTML5 的 getUserMedia API 来访问设备的摄像头,并使用 QRCode 库来解码二维码。这个库非常适合在 Web 应用中实现二维码扫描功能,尤其是在移动设备上。
npm install html5-qrcode
实例组件
<template> <div> <button @click="startScan">扫码</button> <p v-if="qrCodeContent" style="display: inline-block; margin-left: 10px;">{{ qrCodeContent }}</p> <div id="reader" style="width: 100%;"></div> </div> </template>
<script setup> import { ref, onBeforeUnmount } from 'vue'; import { Html5Qrcode } from 'html5-qrcode';
const qrCodeContent = ref(''); let html5QrcodeScanner = null;
function startScan() { if (!html5QrcodeScanner) { html5QrcodeScanner = new Html5Qrcode("reader"); }
html5QrcodeScanner.start( { facingMode: "environment" }, { fps: 10, qrbox: 250 }, (decodedText) => { qrCodeContent.value = decodedText; stopScan(); }, (errorMessage) => { // optionally log any errors or handle them console.log("QR decoding error:", errorMessage); } ).catch(err => { console.error("Unable to start scanning, error:", err); }); }
function stopScan() { if (html5QrcodeScanner) { html5QrcodeScanner.stop().then(() => { console.log("QR Code scanning stopped."); }).catch(err => { console.error("Error stopping QR scanner.", err); }); } }
onBeforeUnmount(() => { stopScan(); }); </script>
<style scoped> #reader { position: relative; width: 100%; max-width: 600px; margin: 0 auto; height: auto; /* Ensure it adjusts to the content */ } </style>
实际效果
会自动识别并获取识别的码的内容,注意由于浏览器的安全限制,需要开启网站的https访问才可以唤起摄像头