vue实现扫码功能


Posted in Javascript onJanuary 17, 2020

最近在项目中碰见一个打开摄像头扫码的功能,项目最后打包成app,用的是hBuilder打的包,刚好hBuilder打包集成H5+sdk,就可以直接用人家的sdk了。

demo地址:vue-scan-demo

代码实现:

<template>
 <div class="scan">
 <div id="bcid">
  <div style="height:40%"></div>
  <p class="tip">...载入中...</p>
 </div>
 <footer>
  <button @click="startRecognize">1.创建控件</button>
  <button @click="startScan">2.开始扫描</button>
  <button @click="cancelScan">3.结束扫描</button>

  <button @click="closeScan">4.关闭控件</button>
 </footer>
 </div>
</template>

<script type='text/ecmascript-6'>
 let scan = null;

 export default {
 data() {
  return {
  codeUrl: '',
  }
 },
 methods: {
  //创建扫描控件
  startRecognize() {
  let that = this;
  if (!window.plus) return;
  scan = new plus.barcode.Barcode('bcid');
  scan.onmarked = onmarked;

  function onmarked(type, result, file) {
   switch (type) {
   case plus.barcode.QR:
    type = 'QR';
    break;
   case plus.barcode.EAN13:
    type = 'EAN13';
    break;
   case plus.barcode.EAN8:
    type = 'EAN8';
    break;
   default:
    type = '其它' + type;
    break;
   }
   result = result.replace(/\n/g, '');
   that.codeUrl = result;
   alert(result);
   that.closeScan();

  }
  },
  //开始扫描
  startScan() {
  if (!window.plus) return;
  scan.start();
  },
  //关闭扫描
  cancelScan() {
  if (!window.plus) return;
  scan.cancel();
  },
  //关闭条码识别控件
  closeScan() {
  if (!window.plus) return;
  scan.close();
  },
 }
 }
</script>
<style lang="less">
 .scan {
 height: 100%;
 #bcid {
  width: 100%;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom:3rem;
  text-align: center;
  color: #fff;
  background: #ccc;
 }
 footer {
  position: absolute;
  left: 0;
  bottom: 1rem;
  height: 2rem;
  line-height: 2rem;
  z-index: 2;
 }
 }
</style>

预览:

打开Hbuilder,新建项目,将目录指向 /dist ,然后右键转换成移动App,真机usb连接运行

效果图:

vue实现扫码功能

通过这个例子,像其他的调用手机原生功能如:语音输入、摇一摇、摄像头、文件系统、微信分享等也可以通过上述方式实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
GreyBox技术总结(转)
Nov 23 Javascript
jQuery 联动日历实现代码
May 31 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
Oct 17 Javascript
修改或扩展jQuery原生方法的代码实例
Jan 13 Javascript
JavaScript 事件对象介绍
Apr 13 Javascript
javascript动态设置样式style实例分析
May 13 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
Sep 17 Javascript
JavaScript中省略元素对数组长度的影响
Oct 26 Javascript
微信小程序开发实战教程之手势解锁
Nov 18 Javascript
简单谈谈关于Angular Cli打包的事
Sep 05 Javascript
JS制作简易计算器的实例代码
Jul 04 Javascript
微信小程序实现电影App导航和轮播
Nov 30 Javascript
js实现轮播图效果 z-index实现轮播图
Jan 17 #Javascript
js键盘事件实现人物的行走
Jan 17 #Javascript
javascript实现简易的计算器
Jan 17 #Javascript
JavaScript简易计算器制作
Jan 17 #Javascript
vue下axios拦截器token刷新机制的实例代码
Jan 17 #Javascript
js布局实现单选按钮控件
Jan 17 #Javascript
vue 查看dist文件里的结构(多种方式)
Jan 17 #Javascript
You might like
php生成EXCEL的东东
2006/10/09 PHP
PHP文件上传实例详解!!!
2007/01/02 PHP
PHP CURL 内存泄露问题解决方法
2015/02/12 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
node.js入门教程
2014/06/01 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
layerui代码控制tab选项卡,添加,关闭的实例
2019/09/04 Javascript
用js编写留言板
2020/03/17 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
python os.fork() 循环输出方法
2019/08/08 Python
python内置模块collections知识点总结
2019/12/19 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
财务会计专业毕业生自荐信
2013/10/02 职场文书
创先争优制度
2014/01/21 职场文书
合作意向书模板
2014/03/31 职场文书
小学捐书活动总结
2014/07/05 职场文书
四查四看整改措施
2014/09/19 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
质检员岗位职责
2015/02/03 职场文书
生产实习心得体会范文
2016/01/22 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis