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 相关文章推荐
起点页面传值js,有空研究学习下
Jan 25 Javascript
父子窗体间传递JSON格式的数据的代码
Dec 25 Javascript
点击隐藏页面左栏或右栏实现js代码
Apr 01 Javascript
JS验证IP,子网掩码,网关和MAC的方法
Jul 02 Javascript
JavaScript实现添加及删除事件的方法小结
Aug 04 Javascript
js文本框走动跑马灯效果代码分享
Aug 25 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
Apr 29 Javascript
Javascript中判断一个值是否为undefined的方法详解
Sep 28 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
Ionic3 UI组件之autocomplete详解
Jun 08 Javascript
vue实现form表单与table表格的数据关联功能示例
Jan 29 Javascript
js实现简单的无缝轮播效果
Sep 05 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操作文件方法问答
2007/03/16 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
PHP闭包函数详解
2016/02/13 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
PHP实现添加购物车功能
2017/03/06 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
2010/03/01 Javascript
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
JavaScript事件处理程序详解
2017/09/19 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
Python图像灰度变换及图像数组操作
2016/01/27 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
Python docx库用法示例分析
2019/02/16 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
Python类如何定义私有变量
2020/02/03 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
html5 canvas 简单画板实现代码
2012/01/05 HTML / CSS
印刷工程专业应届生求职信
2013/09/29 职场文书
英文版网络工程师求职信
2013/10/28 职场文书
档案检查欢迎词
2014/01/13 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
正规欠条模板
2015/07/03 职场文书
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript