jquery.qrcode.js 是一个能够在浏览器端生成矩形二维码QRCode的jquery插件 ,使用它可以很方便的在页面上自动生成二维条码。最新版本已支持canvas(html5)、image(base64)、div(替换了早期table方式)三种渲染方式,默认使用canvas方式,效率最高,需要浏览器支持HTML5,好在除了老旧IE浏览器现在大多数都支持了。
下面我们直接来看一个应用实例:
<script src="http://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js"></script> <script src="https://cdn.bootcss.com/jquery.qrcode/1.0/jquery.qrcode.min.js"></script> <script> $(function(){ $('#qrcode').qrcode("http://www.yiwuku.com");//最简单无参数应用 }) </script> <div id="qrcode"></div>
像许多插件一样,jquery.qrcode.js也有一些实用的api设置项,为了更直观理解,我们再来看一个带参数设置的实例:
<script src="http://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js"></script> <script src="https://larsjung.de/jquery-qrcode/latest/jquery-qrcode-0.14.0.js"></script> <script> $(function(){ $("#qrcode").qrcode({ render: "image", //img渲染方式 width: 200, //宽度(或者直接用size参数同时定义宽高) height:200, //高度 ecLevel: 'L', //纠错级别:'L','M','Q'或'H' text: "www.yiwuku.com" //内容 }); }) </script> <div id="qrcode"></div>
需要注意的是,插件不同版本设置参数可能存在差别,更多参数建议查看官方演示,可以逐项在线调试查看效果。
0.17.0版本参数:
{ // render method: 'canvas', 'image' or 'div' render: 'canvas', // version range somewhere in 1 .. 40 minVersion: 1, maxVersion: 40, // error correction level: 'L', 'M', 'Q' or 'H' ecLevel: 'L', // offset in pixel if drawn onto existing canvas left: 0, top: 0, // size in pixel size: 200, // code color or image element fill: '#000', // background color or image element, null for transparent background background: null, // content text: 'no text', // corner radius relative to module width: 0.0 .. 0.5 radius: 0, // quiet zone in modules quiet: 0, // modes // 0: normal // 1: label strip // 2: label box // 3: image strip // 4: image box mode: 0, mSize: 0.1, mPosX: 0.5, mPosY: 0.5, label: 'no label', fontname: 'sans', fontcolor: '#000', image: null}
可能因为是德国人写的缘故,该插件对中文支持还不够友好。代码不分国界,但语言编码始终存在差别,关于包含中文内容这里也有两种解决方法:
$("#qrcode").qrcode(encodeURI("http://中文.中文"));//使用encodeURI函数进行转码
或者:
<script type="text/javascript">
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;
}
$(function () {
$("#qrcode").qrcode(utf16to8("今天天气不错"));
})
</script>