欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

H5扫码功能实现

程序员文章站 2024-01-24 18:26:58
...

H5扫码功能的实现

功能实现要用到H5+

1.首先需要下载Hbuilder,然后创建H5+项目。再把自己的项目文件替换到新创建的项目里。项目要引入common.js
2.添加一个扫码按钮,给按钮添加点击事件
$(".Scan-three").on("click",function(){
  openBarcode()
})
//打开扫码界面
function openBarcode() {
  createWithoutTitle('barcode_scan.html', {
    titleNView: {
      type: 'float',
      backgroundColor: 'rgba(215,75,40,0.3)',
      titleText: '扫一扫',
      titleColor: '#FFFFFF',
      autoBackButton: true,
      buttons: [
        {
          fontSrc: '_www/helloh5.ttf',
          text: '\ue401',
          fontSize: '18px',
          onclick: 'javascript:switchFlash()',
        },
      ],
    },
  })
}
function scaned(t, r) {
  //扫码结果返回这里
console.log(t+r)
}
 
3.新创建一个html,Scan扫码界面代码:
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover"
    />
    <meta name="HandheldFriendly" content="true" />
    <meta name="MobileOptimized" content="320" />
    <title>Scan</title>
    <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
    <style type="text/css">
      #bcid {
        width: 100%;
        position: absolute;
        top: 0px;
        bottom: 0px;
        text-align: center;
      }

      .tip {
        color: #ffffff;
        font-weight: bold;
        text-shadow: 0px -1px #103e5c;
      }
    </style>
  </head>
  <body style="#000000;">
    <div id="bcid">
      <div style="height: 40%;"></div>
      <p class="tip">...载入中...</p>
    </div>
  </body>
  
  <script src="js/scan.min.js"></script>
  <script type="text/javascript" src="js/common.js"></script>
</html>

4.Scan扫码界面js

var ws = null,
  wo = null
var scan = null
// H5 plus事件处理
function plusReady() {
  // 获取窗口对象
  ws = plus.webview.currentWebview()
  wo = ws.opener()
  // 开始扫描
  ws.addEventListener(
    'show',
    function () {
      scan = new plus.barcode.Barcode('bcid')
      scan.onmarked = onmarked
      scan.start({})
      createSubview()
    },
    false
  )

  // 显示页面并关闭等待框
  ws.show('pop-in')
}
document.addEventListener('plusready', plusReady, false)

// 二维码扫描成功

function onmarked(type, result) {
  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(/\r\n/g, '')
  wo.evalJS("scaned('" + type + "','" + result + "')")// 里面的方法自己创建自己需要的功能
  back()
}

// 创建子窗口
function createSubview() {
  //
}
// 开关闪光灯
var bFlash = false
var AVCaptureDevice = null
var Camera = null

function switchFlash() {
  bFlash = !bFlash
  scan.setFlash(bFlash)
  ws.setStyle({
    titleNView: {
      buttons: [
        {
          fontSrc: '_www/helloh5.ttf',
          text: bFlash ? '\ue400' : '\ue401',
          fontSize: '18px',
          onclick: 'javascript:switchFlash()',
        },
      ],
    },
  })
}

5.效果图
H5扫码功能实现
H5扫码功能实现