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
Feb 25 Javascript
对google个性主页的拖拽效果的js的完整注释[转]
Apr 10 Javascript
php图像生成函数之间的区别分析
Dec 06 Javascript
jquery中each遍历对象和数组示例
Aug 05 Javascript
动态加载jQuery的方法
Jun 16 Javascript
实例代码讲解jquery easyui动态tab页
Nov 17 Javascript
微信小程序之拖拽排序(代码分享)
Jan 21 Javascript
jQuery窗口拖动功能的实现代码
Feb 04 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
Jun 08 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
Jun 18 jQuery
使用Vue 实现滑动验证码功能
Jun 27 Javascript
jquery实现掷骰子小游戏
Oct 24 jQuery
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 date与gmdate的获取日期的区别
2010/02/08 PHP
浅析php创建者模式
2014/11/25 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
菜单效果
2006/10/14 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
详解node.js 事件循环
2020/07/22 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
[00:31]2016完美“圣”典风云人物:国士无双宣传片
2016/12/04 DOTA
python统计文本文件内单词数量的方法
2015/05/30 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
mac系统安装Python3初体验
2018/01/02 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
全球虚拟主机商:HostGator
2017/02/06 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
韩语专业本科生求职信
2013/10/01 职场文书
公司股份合作协议书
2014/12/07 职场文书
小班上学期个人总结
2015/02/12 职场文书
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫
为Centos安装指定版本的Docker
2022/04/01 Servers
Python之matplotlib绘制饼图
2022/04/13 Python
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android