当前位置: 首页 > news >正文

h5的扫一扫功能 (非微信浏览器环境下)

必须在 https 域名下才生效

<template><div><van-field label="服务商编码" right-icon="scan" placeholder="扫描二维码获取" @click-right-icon="getCameras" />    <div class="scan" :style="{'display':isScan ? 'none' : ''}"><div id="qr-reader" width="400px" height="400px"></div></div>
</template>
<script>
import util from "../common/util.js";
export default {data() {return {cameraId: 0,//相机idisScan:true,};},mounted() {this.init();},// 页面销毁周期关闭相机beforeDestroy() {this.stop();},methods: {init() {util.addJs("https://blog.minhazav.dev/assets/research/html5qrcode/html5-qrcode.min.js");},// 开始扫描getCameras() {Html5Qrcode.getCameras().then(devices => {if(devices){if (devices.length==1) {this.cameraId = devices[0].id;}else{this.cameraId = devices[1].id;}this.start();}}).catch(err => {this.$notify({ type: 'warning', message: '调用摄像头失败 : ' + err});});},// 启动相机start() {this.isScan = false;this.html5QrCode = new Html5Qrcode("qr-reader");this.html5QrCode.start(this.cameraId,{fps: 10,qrbox: { width: 250, height: 250 }},qrCodeMessage => {if (qrCodeMessage) {this.stop();}}).catch(err => {console.log(`Unable to start scanning, error: ${err}`);});},// 关闭相机stop() {this.isScan = true;this.html5QrCode.stop().then(ignore => {console.log("QR Code scanning stopped.");}).catch(err => {console.log("Unable to stop scanning.");});},}
};
</script>
<style lang="less" scoped>.scan{width: 100%;height: 100vh;display: flex;align-items: center;justify-content: center;flex-direction: column;overflow: hidden;}
</style>

util.js文件

const addJs=function (url) {return new Promise((resolve, reject) => {const script = document.createElement('script')script.src = urlscript.type = 'text/javascript'document.body.appendChild(script)script.onload = () => {resolve()}})
}
export default {addJs}

http://www.lryc.cn/news/198355.html

相关文章:

  • Typora 导出PDF 报错 failed to export as pdf. undefined 解决方案
  • [架构之路-239]:目标系统 - 纵向分层 - 中间件middleware
  • javascript利用xhr对象实现http流的comet轮循,主要是利用readyState等于3的特点
  • 【Mybatis源码】XPathParser解析器
  • 辉视智慧酒店解决方案助力传统酒店通过智能升级焕发新生
  • 文件和命令的查找与处理
  • 第七章:最新版零基础学习 PYTHON 教程—Python 列表(第三节 -Python程序访问列表中的索引和值)
  • 接口测试面试题整理​​​​​​​
  • 【保姆级教程】ChatGPT/GPT4科研技术应用与AI绘图
  • 凉鞋的 Godot 笔记 202. 变量概述与简介
  • HTML 常用标签及练习
  • Python 编程基础 | 第六章-包与模块管理 | 1、包与模块简介
  • 为中小企业的网络推广策略解析:扩大品牌知名度和曝光度
  • 资源受限MCU Flash空间占用优化
  • 冰蝎默认加密的流量解密
  • C#字符串操作:拼接、截取、分割等高效处理方法
  • 垃圾邮件(短信)分类算法实现 机器学习 深度学习 计算机竞赛
  • 每日一题 1726. 同积元组(中等,计数)
  • LeetCode 2894. 分类求和并作差【数学,容斥原理】1140
  • 100天掌握网络安全知识点!
  • 【ArcGIS绘图系列1】在ArcGIS中制作柱状图与饼状图
  • 【c++】跟webrtc学std array 1: 混音的多维数组
  • App出海起量难?传参安装打开获客增长新途径
  • 当AI遇上3D建模:一场创意与技术的完美碰撞!
  • 工作中的有效沟通
  • 1.集合框架
  • 2023年下半年软考考试重磅消息
  • Spring Boot如何优雅实现动态灵活可配置的高性能数据脱敏功能
  • 九月 Web3 游戏报告:数量增长,巨头入场,用户获取和留存仍存挑战
  • Scala语言入门