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 相关文章推荐
jQuery学习笔记之Helloworld
Dec 22 Javascript
在javaScript中关于submit和button的区别介绍
Oct 20 Javascript
jQuery表格插件ParamQuery简单使用方法示例
Dec 05 Javascript
Jquery 切换不同图片示例代码
Dec 05 Javascript
js控制鼠标事件移动及移出效果显示
Oct 19 Javascript
js实现继承的5种方式
Dec 01 Javascript
基于jquery实现五星好评
Nov 18 jQuery
Vue axios设置访问基础路径方法
Sep 19 Javascript
小程序实现左右来回滚动字幕效果
Dec 28 Javascript
vue组件之间的数据传递方法详解
Apr 19 Javascript
Node.js 深度调试方法解析
Jul 28 Javascript
vue实现图片按比例缩放问题操作
Aug 11 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/19 PHP
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
PHP统计二维数组元素个数的方法
2013/11/12 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
让Firefox支持event对象实现代码
2009/11/07 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
[02:41]辉夜杯现场一家三口 “我爸玩风行 我玩血魔”
2015/12/27 DOTA
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
在Python中marshal对象序列化的相关知识
2015/07/01 Python
Python中文竖排显示的方法
2015/07/28 Python
从DataFrame中提取出Series或DataFrame对象的方法
2018/11/10 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
python实现计算器简易版
2020/12/17 Python
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
阿迪达斯越南官网:adidas越南
2020/07/19 全球购物
校园达人秀策划书
2014/01/12 职场文书
员工入职担保书范文
2014/04/01 职场文书
村长贪污检举信
2014/04/04 职场文书
合作协议书范本
2014/04/17 职场文书
化工厂员工工作总结
2015/10/15 职场文书
2017新年晚会开幕词
2016/03/03 职场文书