位置: IT常识 - 正文

js实现web页面扫描二维码(html5-qrcode)(html 调用扫码)

编辑:rootadmin
js实现web页面扫描二维码(html5-qrcode)

推荐整理分享js实现web页面扫描二维码(html5-qrcode)(html 调用扫码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js调用扫一扫,js调用扫码,web前端实现扫一扫功能,js调用扫码,js调用微信扫一扫,js调用扫码,js调用扫码,web前端实现扫一扫功能,内容如对您有帮助,希望把文章链接给更多的朋友!

js实现web页面扫描二维码(html5-qrcode)

以vue3项目使用为例 这种还是推荐IOS和安卓原生实现,做桥接文件调用 这种实现方式只支持localhost和https的浏览器网页版 而且经过测试兼容性也不是很好,具体参见官网 下面附了官网链接

js实现web页面扫描二维码(html5-qrcode)(html 调用扫码)

1.下载依赖

npm install html5-qrcode

2.二次封装

<template> <div> <div class="readerDialog" v-show="dialogShow"> <div id="reader" width="600px"></div> </div> </div></template><script>// 调起摄像头扫描二维码import { ref, reactive, toRefs, watch, getCurrentInstance } from 'vue';import { Html5Qrcode } from 'html5-qrcode';export default { name: 'Qrcode', props: [], emits: ['success'], setup (props, { emit }) { const params = reactive({ dialogShow: false, codeUrl: '', cameraId: '', showText: '', devices: [], getCamerasText: '', html5QrCode: null }); // 外部调用此方法打开 const open = () => { params.dialogShow = true; console.log('params.dialogShow', params.dialogShow); getCameras(); }; const getCameras = () => { params.getCamerasText = JSON.stringify(Html5Qrcode.getCameras()); Html5Qrcode.getCameras() .then((devices) => { params.showText = JSON.stringify(devices); /** * devices would be an array of objects of type: * { id: "id", label: "label" } */ if (devices && devices.length) { // 如果有2个摄像头,1为前置的 if (devices.length > 1) { params.cameraId = devices[1].id; } else { params.cameraId = devices[0].id; } params.devices = devices; start(); // .. use this to start scanning. } }) .catch((err) => { params.showText = err; console.log('getCameras err:', err); // 获取设备信息失败 }); }; const start = () => { params.html5QrCode = new Html5Qrcode('reader'); params.html5QrCode.start( params.cameraId, // retreived in the previous step. { fps: 10, // sets the framerate to 10 frame per second qrbox: { width: 250, height: 250 }, // sets only 250 X 250 region of viewfinder to // scannable, rest shaded. }, (decodedText, decodedResult) => { // do something when code is read. For example: // if (qrCodeMessage) { // this.getCode(qrCodeMessage); // this.stop(); // } console.log('===成功日志:', decodedText); console.log(typeof decodedResult, decodedResult); emit('success', decodedText); stop(); params.dialogShow = false; }, (errorMessage) => { // parse error, ideally ignore it. For example: // console.log(`QR Code no longer in front of camera.`); console.log('非扫描成功日志:', errorMessage); } ) .catch((err) => { // Start failed, handle it. For example, console.log(`Unable to start scanning, error: ${err}`); }); }; const stop = () => { params.html5QrCode .stop() .then((ignore) => { // QR Code scanning is stopped. console.log('QR Code scanning stopped.'); }) .catch((err) => { // Stop failed, handle it. console.log('Unable to stop scanning.'); }); }; return { ...toRefs(params), getCameras, open }; },};</script><style lang="scss" scoped>.readerDialog { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 999999; background: #333; #reader { top: 25%; }}</style>

3.使用(以下只演示部分核心代码)

html部分

<van-button type="success" @click="cameraClick">开始扫描</van-button><Qrcode ref="QrcodeRef" @success="qrcodeSuccess" />

js部分

import Qrcode from '@/components/Qrcode/index.vue';const QrcodeRef = ref();const qrcodeText = ref('');// 扫描调起const cameraClick = () => { QrcodeRef.value.open();};// 扫描成功回调const qrcodeSuccess = (txt) => { qrcodeText.value = txt;};

官网:https://github.com/mebjas/html5-qrcode

本文链接地址:https://www.jiuchutong.com/zhishi/283334.html 转载请保留说明!

上一篇:一体机、笔记本、品牌机、组装机各自的优缺点(一体机笔记本电脑)

下一篇:修改iframe内部元素的样式(iframe更改自身src)

  • 何谓运输,交通和交通运输
  • 股东权益是资产吗
  • 企业所得税季度预缴
  • 征地补偿费谁来支付
  • 培训属于什么服务行业
  • 增值税普票可以开给个人吗
  • 盘亏的设备按正常报废处理是否符合会计制度要求
  • 外购货物用于什么不得抵扣进项
  • 失控发票补税可以抵扣吗
  • 会计没签字出纳付款违法么
  • 运输公司支付的运输费计入什么科目
  • 公司车辆的维修费挂什么科目
  • 合并财务报表内部交易对净利润影响
  • 暂估发票到账出入库单要填吗
  • 房租物业费摊销
  • 企业注销时留抵税额怎么做账
  • 房产税的常见四大检查点
  • 计提工资时个税是计提上月的吗
  • 环境保护税入账什么会计科目
  • 只开发票没有合同需要缴纳印花税吗?
  • php img
  • 发票作废之后税钱怎么退回了
  • 收到发票已入账,退回怎么做账
  • linux块设备驱动详解
  • 分期付款购买的商品
  • php数组函数输出《咏雪》里有多少"片"字
  • 出售低值易耗品的账务处理
  • opware12.exe - opware12进程是什么文件 有什么用
  • 收到小微企业贷款减息会计处理办法
  • 在树洞中休息的英语
  • 七个超级实用的手机
  • vue实战开发项目视频
  • 会计证的作用和用途
  • 农业企业所得税是免税的吗
  • 新注册的小公司要登记社保吗
  • 小企业会计准则 存货
  • 非公司员工可以举报公司不交社保吗
  • 公司给员工交社保是怎么交的
  • 办理车辆购置税流程
  • 金税三期开票流程
  • 应税工资和实发工资区别
  • php算法有哪些
  • 建筑施工企业收入怎么确认
  • 融资租赁有免租金吗
  • 长期股权投资种类
  • 政府会计准则的双报告
  • 长期待摊费用最低摊销年限
  • 应收账款借方余额需要交税吗
  • 经营性应付项目的增加为什么调减
  • 无形资产摊销一经确认不得转回
  • 销售额大于营业收入吗
  • 销售代销货物会计处理
  • 收到银行存款利息
  • 筹建期开办费明细
  • 现金日记账本月合计怎么划线
  • 进项税发票可以跨年抵扣吗
  • 独立法人资格是独立核算
  • MySQL中truncate误操作后的数据恢复案例
  • mysql安全性控制语句
  • cmd命令行窗口快捷键
  • ubuntu的快捷键
  • fedora vlc
  • linux安装solr
  • winxp安卓
  • nfs安装配置
  • linux ssh免密码
  • mac如何打印文件
  • linux常用网络工具
  • Win7/Win8.1/Win10命令行配置静态IP地址方法
  • win8桌面图片位置
  • freebsd服务器怎么样
  • linux中rename命令详解
  • Android-ViewPager使用示例
  • python crc
  • 用javascript
  • 河南省地方税务局公告2017年第4号
  • 贵州网上税务大厅官网
  • 广西空置房物业费减免政策吗
  • 民办非企业需要办理税务登记吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设