jquery插件qrcode在线生成二维码

随着移动互联网的发展,二维码现在应用得越来越广泛了,随手扫扫就可以浏览网站、加个好友什么的,比起手工输入真的是方便太多了。

前期做了一个综合测评系统,考虑逐步实现移动化,一长串的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代码如下:

<!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解决这个问题,具体代码如下:

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有所帮助。

(0)

相关推荐

  • jQuery实现微信长按识别二维码功能

    最近一直在搞一个微信开发的项目,终于快要完工了,今天小编抽个时间记录下在项目开发过程中遇到jquery.qrcode.min.js生成二维码长按不识别的解决方法,希望对大家有所帮助! 1.引入JS库 <script src="jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script> <script src="jquery.qrcode

  • jquery.qrcode在线生成二维码使用示例

    最近在做一个二维码的项目,所以在随便看的时候发现这个感觉挺不错的.jquery除了它自己非常出色的js功能之外还附带有数不清的插件,可以完成各种美好的效果和功能.jquery.qrcode就是其中一个,用来在线生成二维码. qrcode插件在github上开源的地址在https://github.com/jeromeetienne/jquery-qrcode 它的后面附带有使用说明,只有简单的四步,非常方便的调用. 插件是外国人写的,所以在开始使用的时候不能识别中文内容的二维码,因为jquery

  • 使用jquery组件qrcode生成二维码及应用指南

    有一些耗cpu的计算,完全可以在客户端上计算,比如生成二维码. qrcode其实是通过计算,然后使用jquery实现图形渲染和画图.支持canvas和table两种方式生成我们所需的二维码. 具体用法 qrcode是jquery组件,需要至少两个js, 就是 jquery 和 jquery.qrcode.可以到https://github.com/jeromeetienne/jquery-qrcode获取最新的代码. 复制代码 代码如下: <script type="text/javasc

  • 使用jquery.qrcode.min.js实现中文转化二维码

    今天还是要讲一下关于二维码的知识,前几篇讲解中有讲到我使用的可以生成二维码的js是qrcode.js,然后结合Cordovad的插件$cordovaBarcodeScanner插件可以扫描二维码,这样就基本完成了简单的扫一扫功能.后来在项目进行,开始要调用后台数据和传参数到接口的时候发现qrcode.js它只能解析英文或者数字,并且只能解析一个字符串! 而我所需要的是将一个对象转化成二维码,然后在扫描的时候取出对象中的数据,显然qrcode.js不能实现,经过查找,找到另一个jquery.qrc

  • jQuery实现二维码扫描功能

    二维码:利用图形模拟二进制0.1的概念,达到存储少量数据的功能,一般移动端浏览器解析出二维码里面隐藏的url数据会自动进行跳转,常见的支付宝.微信扫描登陆就是利用该原理 Jquery二维码的实现:jquery.qrcode.min.js插件 HTML正文: <script type="text/javascript" src="js/jquery.qrcode.min.js"></script> <input type="bu

  • jQuery qrcode生成二维码的方法

    现在二维码越来越流行,很多网页都会有个二维码,扫描后可通过手机浏览. 以前做类似的项目一般是在网页上生成图片,然后把图片插入到网页. 这样做不能每个页面都生成二维码. jquery-qrcode是一个能够在浏览器端生成二维码的jquery插件.它是独立的,最小压缩之后不足4k,也没有图片下载请求.引入该类库之后,只需要一行代码,就可以很容易在web页面加上二维码. qrcode其实是通过使用jQuery实现图形渲染,画图,支持canvas(HTML5)和table两种方式,可以到 https:/

  • 利用jquery包将字符串生成二维码图片

    将一个字符串(可以是中文,在生成二维码图片之前将中文转码)生成二维码图片,如果想要带log的二维码,可以在生成后的二维码中间部位自己添加一个小log,log图片不要太大,不然就扫描不出内容了. 复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="js/jquery-1.8.3.js"

  • 利用jquery.qrcode在页面上生成二维码且支持中文

    实例如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>    <title>使用j

  • Jquery 类网页微信二维码图块滚动效果具体实现

    首先是自己定制的脚本方法属性代码: 复制代码 代码如下: /*  * 创建浮动图片广告(Generate a dock AD image)  *  * USAGE:   *  $(selector).higo_plugins_ad({  *      src:null,                    // 广告图片路径  *      closeSrc:null,               // 关闭图片路径  *      href:"#",                

  • 使用jquery.qrcode生成彩色二维码实例

    jquery.qrcode.js 是居于jquery类库的绘制二维码的插件,用它来实现二维码图形渲染支持canvas和table两种绘图方式.(jquery.qrcode.js 设置显示方式为table时在webkit核心浏览器如chrome下会变形,这个需要注意.) 下面为测试代码(增加了颜色控制,可以设置4个区块的颜色值,需要指定render为table.),效果如下: 代码如下: <html> <head> <title>JS生成二维码</title>

随机推荐