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 相关文章推荐
JavaScript Event学习第八章 事件的顺序
Feb 07 Javascript
js获取下拉列表框中的value和text的值示例代码
Jan 11 Javascript
初识Node.js
Mar 20 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
Dec 30 Javascript
react.js 获取真实的DOM节点实例(必看)
Apr 17 Javascript
react-router4 嵌套路由的使用方法
Jul 24 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 Javascript
jquery实现的简单轮播图功能【适合新手】
Aug 17 jQuery
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
js实现小时钟效果
Mar 25 Javascript
通过实例解析js可枚举属性与不可枚举属性
Dec 02 Javascript
javascript Number 与 Math对象的介绍
Nov 17 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遍历数组的三种方法及效率对比分析
2015/02/12 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
2015/12/17 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
初识javascript 文档碎片
2010/07/13 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
最简单的js图片切换效果实现代码
2011/09/24 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python字符串中查找子串小技巧
2015/04/10 Python
Python 中 Meta Classes详解
2016/02/13 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
关于VPN
2012/06/10 面试题
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
优秀团员个人的自我评价
2013/10/02 职场文书
初中生个人学习的自我评价
2013/12/04 职场文书
语文教学随笔感言
2014/02/18 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python