1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> html,body{ padding: 0; margin: 0; } video{ display: none; } canvas{ position: absolute; top: -99999px; left: -9999px; z-index: -999; } </style> </head> <body>
<button id="start">拍照</button> <video id="video" autoplay muted playsinline></video> <canvas id="canvas"></canvas> <script src="https://webqr.com/llqrcode.js"></script>
<script> var timer = null var stream = null var video = document.querySelector("#video") var canvas = document.querySelector("#canvas") canvas.style.width = window.innerWidth; canvas.style.height = window.innerHeight; document.querySelector("#start").addEventListener("click", async function() { try { stream = await navigator.mediaDevices.getUserMedia({ video: { facingMode: 'environment' }, audio: false }); } catch(error) { alert(error.message); return; } video.requestFullscreen(); video.srcObject = stream; video.style.display = 'block';
clearInterval(timer) timer = setInterval(function() { canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height); var image_data_url = canvas.toDataURL('image/jpeg'); qrcode.decode(image_data_url) qrcode.callback = function(msg){ if(!msg.match(/^error/)) { clearInterval(timer) document.exitFullscreen(); alert(msg) } } }, 500) }) document.addEventListener("fullscreenchange", function(event) { if (!document.fullscreenElement) { clearInterval(timer) video.srcObject = null; video.style.display = 'none'; stream.getTracks().forEach(track => track.stop()) } }); </script> </body> </html>
|