vue實(shí)現(xiàn)掃碼功能
最近在項(xiàng)目中碰見(jiàn)一個(gè)打開(kāi)攝像頭掃碼的功能,項(xiàng)目最后打包成app,用的是hBuilder打的包,剛好hBuilder打包集成H5+sdk,就可以直接用人家的sdk了。
demo地址:vue-scan-demo
代碼實(shí)現(xiàn):
<template>
<div class="scan">
<div id="bcid">
<div style="height:40%"></div>
<p class="tip">...載入中...</p>
</div>
<footer>
<button @click="startRecognize">1.創(chuàng)建控件</button>
<button @click="startScan">2.開(kāi)始掃描</button>
<button @click="cancelScan">3.結(jié)束掃描</button>
<button @click="closeScan">4.關(guān)閉控件</button>
</footer>
</div>
</template>
<script type='text/ecmascript-6'>
let scan = null;
export default {
data() {
return {
codeUrl: '',
}
},
methods: {
//創(chuàng)建掃描控件
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();
}
},
//開(kāi)始掃描
startScan() {
if (!window.plus) return;
scan.start();
},
//關(guān)閉掃描
cancelScan() {
if (!window.plus) return;
scan.cancel();
},
//關(guān)閉條碼識(shí)別控件
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>
預(yù)覽:
打開(kāi)Hbuilder,新建項(xiàng)目,將目錄指向 /dist ,然后右鍵轉(zhuǎn)換成移動(dòng)App,真機(jī)usb連接運(yùn)行
效果圖:

通過(guò)這個(gè)例子,像其他的調(diào)用手機(jī)原生功能如:語(yǔ)音輸入、搖一搖、攝像頭、文件系統(tǒng)、微信分享等也可以通過(guò)上述方式實(shí)現(xiàn)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 通過(guò)vue方式實(shí)現(xiàn)二維碼掃碼功能
- Vue實(shí)現(xiàn)瀏覽器端掃碼功能
- vue實(shí)現(xiàn)二維碼掃碼功能(帶樣式)
- vue中監(jiān)聽(tīng)input框獲取焦點(diǎn)及失去焦點(diǎn)的問(wèn)題
- 使用Vue-scroller頁(yè)面input框不能觸發(fā)滑動(dòng)的問(wèn)題及解決方法
- Vue-input框checkbox強(qiáng)制刷新問(wèn)題
- vue.js input框之間賦值方法
- vue項(xiàng)目element UI input框掃碼槍掃描過(guò)快出現(xiàn)數(shù)據(jù)丟失問(wèn)題及解決方案
相關(guān)文章
關(guān)于Element-ui中el-table出現(xiàn)的表格錯(cuò)位問(wèn)題解決
使用ElementUI的el-table后,偶然發(fā)現(xiàn)出現(xiàn)行列錯(cuò)位、對(duì)不齊問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Element-ui中el-table出現(xiàn)的表格錯(cuò)位問(wèn)題解決的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
使用vue-cli創(chuàng)建項(xiàng)目并webpack打包的操作方法
本文給大家分享使用vue-cli創(chuàng)建項(xiàng)目基于webpack模板打包的配置方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-07-07
Vue遞歸實(shí)現(xiàn)樹(shù)形菜單方法實(shí)例
學(xué)習(xí)vue有一段時(shí)間了,最近使用vue做了一套后臺(tái)管理系統(tǒng),其中使用最多就是遞歸組件,下面這篇文章主要給大家介紹了關(guān)于Vue利用遞歸實(shí)現(xiàn)樹(shù)形菜單的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-11-11
vue3中事件總線(xiàn)mitt代碼實(shí)例(第三方庫(kù)mitt)
這篇文章主要給大家介紹了關(guān)于vue3中事件總線(xiàn)mitt(第三方庫(kù)mitt)的相關(guān)資料,Mitt是一個(gè)在Vue.js應(yīng)用程序中使用的小型事件總線(xiàn)庫(kù),該庫(kù)允許組件進(jìn)行通信,而不必過(guò)度依賴(lài)父級(jí)或子級(jí)組件之間的props,需要的朋友可以參考下2023-09-09
ant design 日期格式化的實(shí)現(xiàn)
這篇文章主要介紹了ant design 日期格式化的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
vue動(dòng)態(tài)綁定ref(使用變量)以及獲取方式
這篇文章主要介紹了vue動(dòng)態(tài)綁定ref(使用變量)以及獲取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
vue之如何配置默認(rèn)顯示頁(yè)面和默認(rèn)路由
這篇文章主要介紹了vue之如何配置默認(rèn)顯示頁(yè)面和默認(rèn)路由問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

