jquery外掛程式qrcode線上產生二維碼

來源:互聯網
上載者:User

jquery外掛程式qrcode線上產生二維碼

   jquery外掛程式qrcode線上產生二維碼

         jquery.qrcode是一個強大的jquery的外掛程式,可以用來二維碼圖形的渲染,用於產生二維碼,非常的實用,需要的朋友參考下。

  隨著移動互連網的發展,二維碼現在應用得越來越廣泛了,隨手掃掃就可以瀏覽網站、加個好友什麼的,比起手工輸入真的是方便太多了。

  前期做了一個綜合測評系統,考慮逐步實現移動化,一長串的IP地址使用者輸入也不方便,藉助二維碼的話,使用者拿起手機掃掃就可以直接進入系統。

  基於這個應用情境,就上網研究下了網站二維碼的實現方式,歸納起來有以下兩種:

  1、藉助一些二維碼產生網站或者二維碼產生器產生二維碼圖片,然後掛在網站上,如碼雲 QR-Code (二維碼) 線上產生器

  優點:開發成本為零,能夠快速實現多樣化的二維碼;

  缺點:變更二維碼的維護略顯麻煩

  2、在後端利用java或.net代碼產生二維碼圖片,再在網站上引用圖片,如qrcode、zxing等

  優點:可定製性強,可快速批量產生

  缺點:重量級實現方式,對於簡單應用來講開發成本較高

  3、在前端頁面通過javascript等方式即時產生為二維碼(ˇ?ˇ) ,如jquery-qrcode

  優點:輕量級實現方式,減少圖片IO,節省流量

  缺點:不適合複雜二維碼的產生

  當然在實際應用中,這三種實現方式也不是完全孤立的,我們也可以根據項目實際情況結合應用,最大限度地提高效率、節約成本。

  晚上時間也不多就選了個jquery-qrcode研究下。

  jquery-qrcode

  jquery-qrcode是一個能夠在瀏覽器端產生二維碼的jquery外掛程式。它是獨立的,最小壓縮之後不足4k,也沒有圖片下載請求。引入該類庫之後,只需要一行代碼,就可以很容易在web頁面加上二維碼。

  其託管在github上:https://github.com/jeromeetienne/jquery-qrcode

  jquery-qrcode主要包含兩個檔案:

  1、qrcode.js:二維碼演算法實作類別

  2、jquery.qrcode.js:用jquery將qrcode.js封裝起來,根據使用者參數,實現canvas及table兩種方式渲染產生二維碼

  壓縮之後的只有一個檔案jquery.qrcode.min.js。

  代碼實現

  github上其實已經有了非常詳細的使用說明及樣本,在此就不多做說明了。

  不過為了方便今後使用,我還是結合網路上大家的使用心得重新整理一份代碼。

  jquery-qrcode.html代碼如下:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

<!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>

<!--未壓縮則需要引入兩個檔案jquery.qrcode.js和qrcode.js -->

<!--jquery.qrcode.js:jquery封裝渲染類庫 -->

<!--<script src="jquery.qrcode.js"></script>-->

<!--qrcode.js:二維碼核心計算類庫 -->

<!--<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預設是canvas

$('#qrcodeCanvas').qrcode("http://www.jb51.net/");

//完整用法,有預設值的均可省略

$('#qrcodeTable').qrcode({

text: utf16to8("指令碼之家:http://www.jb51.net/"),//二維碼包含的內容,預設只支援英文內容,中文會亂碼,通過utf16to8轉碼可支援中文

render: "table",//渲染方式可選擇canvas或table,預設是canvas,canvas方式還支援右鍵圖片下載

width: 256,//寬度,預設是256

height: 256,//高度,預設是256,建議寬度和高度保持一致,否則不容易被識別

typeNumber: -1,//計算模式,預設是-1

//correctLevel: QRErrorCorrectLevel.H,//錯誤修正等級,預設是QRErrorCorrectLevel.H,但是加上correctLevel這一行後無法渲染出二維碼

background: "#ffffff",//背景顏色,預設是白色

foreground: "#000000"//前景顏色,預設是黑色

});

</script>

<body>

</html>

  基於官方樣本測試,我們會發現識別出來的中文二維碼會是亂碼。

  根據網友心存善念的解釋:

  這跟js的機制有關係,jquery-qrcode這個庫是採用 charCodeAt() 這個方式進行編碼轉換的,

  而這個方法預設會擷取它的 Unicode 編碼,一般的解碼器都是採用UTF-8, ISO-8859-1等方式,

  英文是沒有問題,如果是中文,一般情況下Unicode是UTF-16實現,長度2位,而UTF-8編碼是3位,這樣二維碼的編解碼就不匹配了。

  解決方式當然是,在二維碼編碼前把字串轉換成UTF-8

  因此我們可以藉助utf16to8.js解決這個問題,具體代碼如下:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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;

}

  以上就是今天給大家分享的全部內容了,希望能夠對大家學習jQuery有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.