You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript或jQuery控制html5-qrcode扫码时的torch(手电筒)功能?

解决方案

你使用的官方v2.0.12版本html5-qrcode未集成手电筒控制逻辑,直接在config里加torch: true不会生效。iOS 14.7.1的Safari支持网页控制手电筒,只需满足安全上下文(HTTPS/localhost)、已获取后置摄像头权限两个前提即可实现,具体实现方式如下:


步骤1:新增HTML元素

在原有代码基础上添加手电筒切换按钮,建议升级库版本到已兼容手电筒控制的最新版:

<button id="torchToggle" style="margin:10px 0;">开启手电筒</button>
<div id="reader" width="350px"></div>
<script src="https://unpkg.com/html5-qrcode@2.3.8/dist/html5-qrcode.min.js"></script>

步骤2:修改JS逻辑,添加手电筒控制

const html5QrCode = new Html5Qrcode("reader");
const torchToggleBtn = document.getElementById('torchToggle');
let currentTrack = null;
let torchEnabled = false;

// 扫码成功回调
const qrCodeSuccessCallback = (decodedText, decodedResult) => {
  html5QrCode.stop();
  alert(decodedText);
};

// 扫描配置
const config = { 
  fps: 60, 
  qrbox: 275, 
  aspectRatio: 1.0
};

// 启动扫描
html5QrCode.start(
  { facingMode: { exact: "environment"} }, 
  config, 
  qrCodeSuccessCallback
).then(() => {
  // 扫描启动成功后获取媒体流轨道
  const mediaStream = html5QrCode.getMediaStream();
  if (!mediaStream) return;
  currentTrack = mediaStream.getVideoTracks()[0];
  
  // 检查设备是否支持手电筒
  if (currentTrack.getCapabilities().torch) {
    torchToggleBtn.style.display = 'block';
    // 绑定切换事件
    torchToggleBtn.addEventListener('click', toggleTorch);
  }
}).catch(err => {
  console.error("扫描启动失败:", err);
});

// 手电筒切换逻辑
function toggleTorch() {
  if (!currentTrack) return;
  torchEnabled = !torchEnabled;
  currentTrack.applyConstraints({
    advanced: [{ torch: torchEnabled }]
  }).then(() => {
    torchToggleBtn.innerText = torchEnabled ? '关闭手电筒' : '开启手电筒';
  }).catch(err => {
    console.error("手电筒切换失败:", err);
    torchEnabled = !torchEnabled;
  });
}

iOS适配注意事项

  • 必须等扫描界面完全渲染、摄像头启动成功后再调用手电筒控制逻辑,不能在html5QrCode.start()执行完成前操作
  • 如果低版本库没有getMediaStream()方法,可以手动存下getUserMedia返回的流对象,再控制轨道参数
  • 不要在非安全上下文(HTTP公网环境)下测试,功能会被浏览器限制

内容的提问来源于stack exchange,提问作者Rodney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:24:03