jquery插件qrcode在線生成二維碼
隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,二維碼現(xiàn)在應(yīng)用得越來越廣泛了,隨手掃掃就可以瀏覽網(wǎng)站、加個(gè)好友什么的,比起手工輸入真的是方便太多了。
前期做了一個(gè)綜合測(cè)評(píng)系統(tǒng),考慮逐步實(shí)現(xiàn)移動(dòng)化,一長(zhǎng)串的IP地址用戶輸入也不方便,借助二維碼的話,用戶拿起手機(jī)掃掃就可以直接進(jìn)入系統(tǒng)。
基于這個(gè)應(yīng)用場(chǎng)景,就上網(wǎng)研究下了網(wǎng)站二維碼的實(shí)現(xiàn)方式,歸納起來有以下兩種:
1、借助一些二維碼生成網(wǎng)站或者二維碼生成器生成二維碼圖片,然后掛在網(wǎng)站上,如碼云 QR-Code (二維碼) 在線生成器
優(yōu)點(diǎn):開發(fā)成本為零,能夠快速實(shí)現(xiàn)多樣化的二維碼;
缺點(diǎn):變更二維碼的維護(hù)略顯麻煩
2、在后端利用java或.net代碼生成二維碼圖片,再在網(wǎng)站上引用圖片,如qrcode、zxing等
優(yōu)點(diǎn):可定制性強(qiáng),可快速批量生成
缺點(diǎn):重量級(jí)實(shí)現(xiàn)方式,對(duì)于簡(jiǎn)單應(yīng)用來講開發(fā)成本較高
3、在前端頁面通過javascript等方式即時(shí)生成為二維碼(ˇ?ˇ) ,如jquery-qrcode
優(yōu)點(diǎn):輕量級(jí)實(shí)現(xiàn)方式,減少圖片IO,節(jié)省流量
缺點(diǎn):不適合復(fù)雜二維碼的生成
當(dāng)然在實(shí)際應(yīng)用中,這三種實(shí)現(xiàn)方式也不是完全孤立的,我們也可以根據(jù)項(xiàng)目實(shí)際情況結(jié)合應(yīng)用,最大限度地提高效率、節(jié)約成本。
晚上時(shí)間也不多就選了個(gè)jquery-qrcode研究下。
jquery-qrcode
jquery-qrcode是一個(gè)能夠在瀏覽器端生成二維碼的jquery插件。它是獨(dú)立的,最小壓縮之后不足4k,也沒有圖片下載請(qǐng)求。引入該類庫(kù)之后,只需要一行代碼,就可以很容易在web頁面加上二維碼。
其托管在github上:https://github.com/jeromeetienne/jquery-qrcode
jquery-qrcode主要包含兩個(gè)文件:
1、qrcode.js:二維碼算法實(shí)現(xiàn)類
2、jquery.qrcode.js:用jquery將qrcode.js封裝起來,根據(jù)用戶參數(shù),實(shí)現(xiàn)canvas及table兩種方式渲染生成二維碼
壓縮之后的只有一個(gè)文件jquery.qrcode.min.js。
代碼實(shí)現(xiàn)
github上其實(shí)已經(jīng)有了非常詳細(xì)的使用說明及示例,在此就不多做說明了。
不過為了方便今后使用,我還是結(jié)合網(wǎng)絡(luò)上大家的使用心得重新整理一份代碼。
jquery-qrcode.html代碼如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>通過jquery-qrcode生成二維碼</title> </head> <body> <!-- 引入百度CDN公共庫(kù)的壓縮版jQuery --> <script src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script> <!--引入壓縮版jquery.qrcode.js --> <script src="jquery.qrcode.min.js"></script> <!--未壓縮則需要引入兩個(gè)文件jquery.qrcode.js和qrcode.js --> <!--jquery.qrcode.js:jquery封裝渲染類庫(kù) --> <!--<script src="jquery.qrcode.js"></script>--> <!--qrcode.js:二維碼核心計(jì)算類庫(kù) --> <!--<script src="qrcode.js"></script>--> <script src="jquery.qrcode.min.js"></script> <!--解決中文亂碼問題,引入utf16t8.js --> <script src="utf16to8.js"></script> <div id="qrcodeCanvas"></div> <div id="qrcodeTable"></div> <script> //最簡(jiǎn)用法,render默認(rèn)是canvas $('#qrcodeCanvas').qrcode("http://www.dbjr.com.cn/"); //完整用法,有默認(rèn)值的均可省略 $('#qrcodeTable').qrcode({ text: utf16to8("腳本之家:http://www.dbjr.com.cn/"),//二維碼包含的內(nèi)容,默認(rèn)只支持英文內(nèi)容,中文會(huì)亂碼,通過utf16to8轉(zhuǎn)碼可支持中文 render: "table",//渲染方式可選擇canvas或table,默認(rèn)是canvas,canvas方式還支持右鍵圖片下載 width: 256,//寬度,默認(rèn)是256 height: 256,//高度,默認(rèn)是256,建議寬度和高度保持一致,否則不容易被識(shí)別 typeNumber: -1,//計(jì)算模式,默認(rèn)是-1 //correctLevel: QRErrorCorrectLevel.H,//糾錯(cuò)等級(jí),默認(rèn)是QRErrorCorrectLevel.H,但是加上correctLevel這一行后無法渲染出二維碼 background: "#ffffff",//背景顏色,默認(rèn)是白色 foreground: "#000000"http://前景顏色,默認(rèn)是黑色 }); </script> <body> </html>
基于官方示例測(cè)試,我們會(huì)發(fā)現(xiàn)識(shí)別出來的中文二維碼會(huì)是亂碼。
根據(jù)網(wǎng)友心存善念的解釋:
這跟js的機(jī)制有關(guān)系,jquery-qrcode這個(gè)庫(kù)是采用 charCodeAt() 這個(gè)方式進(jìn)行編碼轉(zhuǎn)換的,
而這個(gè)方法默認(rèn)會(huì)獲取它的 Unicode 編碼,一般的解碼器都是采用UTF-8, ISO-8859-1等方式,
英文是沒有問題,如果是中文,一般情況下Unicode是UTF-16實(shí)現(xiàn),長(zhǎng)度2位,而UTF-8編碼是3位,這樣二維碼的編解碼就不匹配了。
解決方式當(dāng)然是,在二維碼編碼前把字符串轉(zhuǎn)換成UTF-8
因此我們可以借助utf16to8.js解決這個(gè)問題,具體代碼如下:
function utf16to8(str) { var out, i, len, c; out = ""; len = str.length; for (i = 0; i < len; i++) { c = str.charCodeAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { out += str.charAt(i); } else if (c > 0x07FF) { out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } else { out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } } return out; }
以上就是今天給大家分享的全部?jī)?nèi)容了,希望能夠?qū)Υ蠹覍W(xué)習(xí)jQuery有所幫助。
- 基于jQuery和CSS3實(shí)現(xiàn)APPLE TV海報(bào)視差效果
- 利用jquery包將字符串生成二維碼圖片
- 利用jquery.qrcode在頁面上生成二維碼且支持中文
- 使用jquery組件qrcode生成二維碼及應(yīng)用指南
- 使用jquery.qrcode生成彩色二維碼實(shí)例
- javaScript生成支持中文帶logo的二維碼(jquery.qrcode.js)
- 使用jQuery.Qrcode插件在客戶端動(dòng)態(tài)生成二維碼并添加自定義Logo
- jquery.qrcode在線生成二維碼使用示例
- jQuery 生成svg矢量二維碼
- jquery canvas生成帶有二維碼的海報(bào)
相關(guān)文章
jQuery基礎(chǔ)_入門必看知識(shí)點(diǎn)
下面小編就為大家?guī)硪黄猨Query基礎(chǔ)_入門必看知識(shí)點(diǎn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07jQuery判斷checkbox(復(fù)選框)是否被選中以及全選、反選實(shí)現(xiàn)代碼
本篇文章主要是對(duì)jQuery判斷checkbox(復(fù)選框)是否被選中以及全選、反選實(shí)現(xiàn)代碼進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02JQuery將文本轉(zhuǎn)化成JSON對(duì)象需要注意的問題
在JQuery的許多方法中,很多方法的參數(shù)可以傳入一個(gè)JSON對(duì)象,比如Ajax方法的第二個(gè)參數(shù)。怎么將文本轉(zhuǎn)化成JSON對(duì)象,需要注意以下問題2011-05-05使用jQuery或者原生js實(shí)現(xiàn)鼠標(biāo)滾動(dòng)加載頁面新數(shù)據(jù)
這篇文章主要介紹了使用jQuery或者原生js實(shí)現(xiàn)鼠標(biāo)滾動(dòng)加載頁面新數(shù)據(jù)的方法,即控制滾動(dòng)條下拉時(shí)的加載事件,需要的朋友可以參考下2016-03-03jQuery內(nèi)部原理和實(shí)現(xiàn)方式淺析
這篇文章主要介紹了jQuery內(nèi)部原理和實(shí)現(xiàn)方式淺析,本文試圖從整體來闡述一下jQuery的內(nèi)部實(shí)現(xiàn),需要的朋友可以參考下2015-02-02利用jquery如何從json中讀取數(shù)據(jù)追加到html中
這篇文章主要給大家介紹了關(guān)于利用jquery如何從json中讀取數(shù)據(jù)追加到html中的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編一起來看看吧。2017-12-12jquery實(shí)現(xiàn)全選功能效果的實(shí)現(xiàn)代碼
下面小編就為大家?guī)硪黄猨query實(shí)現(xiàn)全選功能效果的實(shí)現(xiàn)代碼。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05