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功能函数代码
Jun 23 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
Oct 26 Javascript
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
JavaScript 基础篇(一)
Mar 30 Javascript
异步javascript的原理和实现技巧介绍
Nov 08 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
AngularJS初始化静态模板详解
Jan 14 Javascript
js实现页面跳转的几种方法小结
May 16 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
Jun 22 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
Aug 20 Javascript
javascript的this关键字详解
May 20 Javascript
Vue基于iview table展示图片实现点击放大
Aug 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
php微信开发之谷歌测距
2018/06/14 PHP
浅谈jQuery中replace()方法
2015/05/13 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python自动化测试实例解析
2014/09/28 Python
python中尾递归用法实例详解
2015/04/28 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
Python科学画图代码分享
2017/11/29 Python
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
Python request中文乱码问题解决方案
2020/09/17 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
大学生入党思想汇报
2014/01/14 职场文书
淘宝活动策划方案
2014/02/06 职场文书
空乘英文求职信
2014/04/13 职场文书
投资合作协议书范本
2014/04/17 职场文书
第二课堂活动总结
2014/05/07 职场文书
纪检监察建议书
2014/05/19 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
SpringBoot集成Redis的思路详解
2021/10/16 Redis