国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jquery插件qrcode在線生成二維碼

2019-11-20 12:36:26
字體:
供稿:網(wǎng)友

隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,二維碼現(xiàn)在應(yīng)用得越來越廣泛了,隨手掃掃就可以瀏覽網(wǎng)站、加個(gè)好友什么的,比起手工輸入真的是方便太多了。

前期做了一個(gè)綜合測評(píng)系統(tǒng),考慮逐步實(shí)現(xiàn)移動(dòng)化,一長串的IP地址用戶輸入也不方便,借助二維碼的話,用戶拿起手機(jī)掃掃就可以直接進(jìn)入系統(tǒng)。

基于這個(gè)應(yī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)方式,對于簡單應(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,也沒有圖片下載請求。引入該類庫之后,只需要一行代碼,就可以很容易在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公共庫的壓縮版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封裝渲染類庫 --><!--<script src="jquery.qrcode.js"></script>--><!--qrcode.js:二維碼核心計(jì)算類庫 --><!--<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> //最簡用法,render默認(rèn)是canvas $('#qrcodeCanvas').qrcode("http://m.survivalescaperooms.com/"); //完整用法,有默認(rèn)值的均可省略 $('#qrcodeTable').qrcode({  text: utf16to8("武林網(wǎng)://m.survivalescaperooms.com/"),//二維碼包含的內(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>

基于官方示例測試,我們會(huì)發(fā)現(xiàn)識(shí)別出來的中文二維碼會(huì)是亂碼。

根據(jù)網(wǎng)友心存善念的解釋:

這跟js的機(jī)制有關(guān)系,jquery-qrcode這個(gè)庫是采用 charCodeAt() 這個(gè)方式進(jìn)行編碼轉(zhuǎn)換的,

而這個(gè)方法默認(rèn)會(huì)獲取它的 Unicode 編碼,一般的解碼器都是采用UTF-8, ISO-8859-1等方式,

英文是沒有問題,如果是中文,一般情況下Unicode是UTF-16實(shí)現(xiàn),長度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;}

以上就是今天給大家分享的全部內(nèi)容了,希望能夠?qū)Υ蠹覍W(xué)習(xí)jQuery有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 客服| 卓尼县| 古蔺县| 绥棱县| 基隆市| 大石桥市| 石家庄市| 金乡县| 类乌齐县| 颍上县| 安吉县| 铁岭县| 化隆| 大姚县| 夏河县| 湾仔区| 德保县| 喀喇沁旗| 如皋市| 玛曲县| 额济纳旗| 库车县| 磴口县| 山阳县| 霍州市| 凯里市| 通州区| 托克逊县| 潜江市| 赤壁市| 巢湖市| 民丰县| 罗甸县| 会同县| 黑河市| 双柏县| 灵山县| 柳江县| 科技| 浙江省| 尚志市|