可以实现,使用这个插件html5-qrcode就能实现
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>二维码扫描器</title> <!-- 引入 html5-qrcode.js --> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/html5-qrcode.min.js"></script> <style> body { font-family: Arial, sans-serif; display: flex; flex-direction: column; align-items: center; padding: 20px; background-color: #f0f0f0; } #qr-reader { width: 100%; max-width: 500px; margin-bottom: 20px; } #qr-reader__dashboard_section { border: 2px solid #007bff; border-radius: 10px; overflow: hidden; } #start-button, #stop-button { padding: 10px 20px; font-size: 16px; margin: 5px; cursor: pointer; background-color: #007bff; color: white; border: none; border-radius: 5px; } #stop-button { background-color: #dc3545; } #start-button:hover, #stop-button:hover { opacity: 0.9; } #result { margin-top: 20px; padding: 15px; background-color: white; border-radius: 5px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); word-break: break-all; min-height: 20px; } .hidden { display: none; } </style> </head> <body> <h1>二维码扫描器</h1> <!-- 扫描区域容器 --> <div id="qr-reader"></div> <!-- 控制按钮 --> <button id="start-button">开始扫描</button> <button id="stop-button" class="hidden">停止扫描</button> <!-- 扫描结果 --> <div id="result">扫描结果将显示在这里</div> <script> // 初始化变量 let html5QrCode = null; const qrReaderId = "qr-reader"; const startButton = document.getElementById("start-button"); const stopButton = document.getElementById("stop-button"); const resultDiv = document.getElementById("result"); // 成功扫描回调函数 function onScanSuccess(decodedText, decodedResult) { resultDiv.innerHTML = `扫描成功: ${decodedText}`; console.log(`扫描结果: ${decodedText}`, decodedResult); // 可选:扫描成功后停止摄像头 // stopScanning(); } // 扫描失败回调函数(可选) function onScanFailure(error) { // 扫描失败时的处理(通常是未检测到二维码) // console.warn(`扫描失败: ${error}`); } // 开始扫描函数 function startScanning() { // 如果已经存在实例,先清除 if (html5QrCode) { stopScanning(); } // 创建新的 Html5Qrcode 实例 html5QrCode = new Html5Qrcode(qrReaderId); // 配置参数 const config = { fps: 10, // 每秒尝试解码的帧数 qrbox: { // 二维码扫描框的尺寸 width: 250, height: 250 }, // 只支持某些摄像头(可选) // aspectRatio: 1.0 // 正方形比例 }; // 开始扫描 html5QrCode.start( { facingMode: "environment" }, // 优先使用后置摄像头 config, onScanSuccess, onScanFailure ).then(() => { // 成功启动摄像头 resultDiv.innerHTML = "摄像头已启动,正在扫描..."; startButton.classList.add("hidden"); stopButton.classList.remove("hidden"); }).catch((err) => { // 启动失败 console.error("无法启动摄像头", err); resultDiv.innerHTML = `错误: ${err.message || err}`; }); } // 停止扫描函数 function stopScanning() { if (html5QrCode) { html5QrCode.stop().then(() => { // 停止成功 html5QrCode.clear(); // 清除UI元素 html5QrCode = null; resultDiv.innerHTML = "扫描已停止"; stopButton.classList.add("hidden"); startButton.classList.remove("hidden"); }).catch((err) => { // 停止失败 console.error("无法停止扫描", err); resultDiv.innerHTML = `停止失败: ${err}`; }); } } // 绑定按钮事件 startButton.addEventListener("click", startScanning); stopButton.addEventListener("click", stopScanning); // 页面加载完成后自动开始扫描(可选) // window.addEventListener("load", startScanning); </script> </body> </html>
网友回复
ace.js如何获取选择文本的开始和结束行数?
如何把qwen code cli或gemini cli的免费调用额度换成http api对外开放接口?
如何限制windows10电脑只能打开指定的程序?
python如何调用ai大模型实现web网页系统的功能测试并生成测试报告?
有没有免费进行web网站ai仿真人测试生成测试报告的mcp服务或api?
Context Engineering到底是啥,有什么用?
如何使用Google veo 3+高斯溅射(Gaussian Splatting)技术生成4d视频?
浏览器中如何实时调用摄像头扫描二维码?
grok4、gemini2.5pro、gpt5、claude4.1到底谁的编程能力更强一些?
python能将2d平面户型图转换成3d三维户型效果图吗?