日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

h5打开手机扫码功能

發(fā)布時(shí)間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 h5打开手机扫码功能 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載至:http://div.io/topic/1562

1.解決的問(wèn)題:

1.能夠在微博客戶端呼起攝像頭掃描二維碼并且解析;
2.能夠在原生瀏覽器和微信客戶端中掃描二維碼并且解析;

2.優(yōu)點(diǎn):

web端或者是 h5端可以直接完成掃碼的工作;

3.缺點(diǎn):

圖片不清晰很容易解析失敗(拍照掃描圖片需要鏡頭離二維碼的距離很近),相對(duì)于?native?呼起的攝像頭解析會(huì)有1-2秒的延時(shí)。

說(shuō)明:

此插件需要配合zepto.js?或者?jQuery.js使用

使用方法:

1. 在需要使用的頁(yè)面按照下面順序引入 lib 目錄下的 js 文件

<script src="lib/zepto.js"></script><script src="lib/qrcode.lib.min.js"></script><script src="lib/qrcode.js"></script>

2.自定義按鈕的 html 樣式
為自定義的按鈕添加自定義屬性,屬性名稱為node-type
為 input 按鈕添加自定義的屬性, 屬性名稱為node-type

因?yàn)樵摬寮枰褂?lt;input type="file" />?,該 html 結(jié)構(gòu)在網(wǎng)頁(yè)上面是有固定的顯示樣式,為了能夠自定義按鈕樣式,我們可以按照下面的示例代碼結(jié)構(gòu)嵌套代碼

<div><div class="qr-btn" node-type="qr-btn">掃描二維碼1<input node-type="jsbridge" type="file" name="myPhoto" value="掃描二維碼1" /></div></div>

然后設(shè)置?input?按鈕的?css?隱藏按鈕,比如我使用的是屬性選擇器

input[node-type=jsbridge]{display:none; }

這里我們只需要按照自己的需要定義class="qr-btn"的樣式即可。

3.在頁(yè)面上初始化 Qrcode 對(duì)象

//初始化掃描二維碼按鈕,傳入自定義的 node-type 屬性$(function() {Qrcode.init($('[node-type=qr-btn]'));});

主要代碼解析

(function($) {var Qrcode = function(tempBtn) {var _this_ = this;var isWeiboWebView = /__weibo__/.test(navigator.userAgent);if (isWeiboWebView) {if (window.WeiboJSBridge) {_this_.bridgeReady(tempBtn);} else {document.addEventListener('WeiboJSBridgeReady', function() {_this_.bridgeReady(tempBtn);});}} else {_this_.nativeReady(tempBtn);}};Qrcode.prototype = {nativeReady: function(tempBtn) {$('[node-type=jsbridge]',tempBtn).on('click',function(e){e.stopPropagation();});$(tempBtn).bind('click',function(e){$(this).find('input[node-type=jsbridge]').trigger('click');});$(tempBtn).bind('change', this.getImgFile);},bridgeReady: function(tempBtn) {$(tempBtn).bind('click', this.weiBoBridge);},weiBoBridge: function() {window.WeiboJSBridge.invoke('scanQRCode', null, function(params) {//得到掃碼的結(jié)果$('.result-qrcode').append(params.result + '<br/>');});},getImgFile: function() {var _this_ = this;var inputDom = $(this).find('input[node-type=jsbridge]');var imgFile = inputDom[0].files;var oFile = imgFile[0];var oFReader = new FileReader();var rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i;if (imgFile.length === 0) {return;}if (!rFilter.test(oFile.type)) {alert("選擇正確的圖片格式!");return;}oFReader.onload = function(oFREvent) {qrcode.decode(oFREvent.target.result);qrcode.callback = function(data) {//得到掃碼的結(jié)果$('.result-qrcode').append(data + '<br/>');};};oFReader.readAsDataURL(oFile);},destory: function() {$(tempBtn).off('click');}};Qrcode.init = function(tempBtn) {var _this_ = this;tempBtn.each(function() {new _this_($(this));});};window.Qrcode = Qrcode; })(window.Zepto ? Zepto : jQuery);


總結(jié)

以上是生活随笔為你收集整理的h5打开手机扫码功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。