// script.js
const video = document.getElementById('video');
const overlay = document.getElementById('overlay');
const manualInputBtn = document.getElementById('manualInputBtn');
const flashBtn = document.getElementById('flashBtn');
const scanArea = document.querySelector('.scan-area');
let stream;
let scanning = false;
let flashEnabled = false;
// 獲取攝像頭權限并開始播放視頻流
navigator.mediaDevices.getUserMedia({ video: { facingMode: "environment" } })
.then(s => {
stream = s;
video.srcObject = stream;
video.play();
// 開始掃描
scanning = true;
requestAnimationFrame(scan);
})
.catch(err => {
console.error("無法訪問攝像頭:", err);
});
// 掃描二維碼
function scan() {
if (scanning) {
const canvas = overlay.getContext('2d');
const videoWidth = video.videoWidth;
const videoHeight = video.videoHeight;
// 設置畫布大小
overlay.width = videoWidth;
overlay.height = videoHeight;
// 將視頻幀繪制到畫布上
canvas.drawImage(video, 0, 0, videoWidth, videoHeight);
// ...獲取掃描區域圖像數據
// 使用 jsQR 庫解碼二維碼
const code = jsQR(imageData.data, imageData.width, imageData.height);
// 如果成功解碼,則停止掃描并處理結果
if (code) {
scanning = false;
handleScanResult(code.data);
} else {
requestAnimationFrame(scan);
}
}
}
// 處理掃描結果
function handleScanResult(data) {
alert("掃描結果:" + data);
// 這里可以根據掃描結果進行相應的操作,例如跳轉到鏈接或顯示信息
}
// 手動輸入按鈕點擊事件
manualInputBtn.addEventListener('click', function() {
// ...
});
// 閃光燈按鈕點擊事件
flashBtn.addEventListener('click', function() {
// ...
});