/* * jquery.qrcode.js * author:路过天涯(改版) * */ (function ($) { $.fn.qrcode = function (options) { var isHtml5 = false; if (document.getElementById("Canvas").getContext) { isHtml5 = true; } // if options is string, if (typeof options === 'string') { options = { text: options }; } // set default values // typeNumber < 1 for automatic calculation options = $.extend({}, { render: "canvas", width: 256, height: 256, typeNumber: -1, correctLevel: QRErrorCorrectLevel.H, background: "#ffffff", foreground: "#000000" }, options); var set_logoImg = function (width, height, qrcode) { var imgElement = $("#logoImg").attr("src"); console.log(options); if (!imgElement) { //create the img logo var img = $(document.createElement("IMG")) .attr("src", options.src) .attr("id", "logoImg") .css( { "position": "absolute", "z-Index": 1000, "width": width * 10 + "px", "height": height * 10 + "px", "left": ((qrcode.getModuleCount() - 1) / 2 - 4) * width + "px", "top": ((qrcode.getModuleCount() - 1) / 2 - 4) * height + "px" } ).appendTo($('#qr_container')); } } var createCanvas = function () { // create the qrcode itself var qrcode = new QRCode(options.typeNumber, options.correctLevel); qrcode.addData(options.text); qrcode.make(); // get canvas element var canvas = $("Canvas").get(0); canvas.width = options.width; canvas.height = options.height; var ctx = canvas.getContext('2d'); // compute tileW/tileH based on options.width/options.height var tileW = options.width / qrcode.getModuleCount(); var tileH = options.height / qrcode.getModuleCount(); // draw in the canvas for (var row = 0; row < qrcode.getModuleCount(); row++) { for (var col = 0; col < qrcode.getModuleCount(); col++) { ctx.fillStyle = qrcode.isDark(row, col) ? options.foreground : options.background; var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW)); var h = (Math.ceil((row + 1) * tileW) - Math.floor(row * tileW)); ctx.fillRect(Math.round(col * tileW), Math.round(row * tileH), w, h); } } //set logo set_logoImg(tileW, tileH, qrcode); // return just built canvas return canvas; } // from Jon-Carlos Rivera (https://github.com/imbcmdth) var createTable = function () { // create the qrcode itself var qrcode = new QRCode(options.typeNumber, options.correctLevel); qrcode.addData(options.text); qrcode.make(); var $table; var tableTemp = $("#contentInfo").html(); if (!tableTemp) { // create table element $table = $('<table></table>') .css("width", options.width + "px") .css("height", options.height + "px") .css("border", "0px") .css("border-collapse", "collapse") .css('background-color', options.background) .attr('id', "contentInfo"); } else { $("#contentInfo").html(""); $table = $("#contentInfo"); } // compute tileS percentage var tileW = options.width / qrcode.getModuleCount(); var tileH = options.height / qrcode.getModuleCount(); // draw in the table for (var row = 0; row < qrcode.getModuleCount(); row++) { var $row = $('<tr></tr>').css('height', tileH + "px").appendTo($table); for (var col = 0; col < qrcode.getModuleCount(); col++) { $('<td></td>') .css('width', tileW + "px") .css('background-color', qrcode.isDark(row, col) ? options.foreground : options.background) .appendTo($row); } } //set logo set_logoImg(tileW, tileH, qrcode); // return just built canvas return $table; } return this.each(function () { var element = isHtml5 ? createCanvas() : createTable(); $(element).appendTo(this); }); }; })(jQuery);
需要做一下几步:
第一步:
<!--此处需要引入三个JS文件
一、jquery-1.10.js (这个版本可以随意更换试试)
二、qrcode.js
三、jquery.qrcode.js
顺序要注意,不能乱了顺序;
该版本可以兼容所有低版本的浏览器,包括IE6、7等等
-->
第二步:引入转码函数(将跳转url转码)
1 function utf16to8(str) { //转码 2 var out, i, len, c; 3 out = ""; 4 len = str.length; 5 for (i = 0; i < len; i++) { 6 c = str.charCodeAt(i); 7 if ((c >= 0x0001) && (c <= 0x007F)) { 8 out += str.charAt(i); 9 } else if (c > 0x07FF) { 10 out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); 11 out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); 12 out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); 13 } else { 14 out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); 15 out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); 16 } 17 } 18 return out; 19 }
第三步:创建二维码
// 生成二维码 $('#放置二维码的容器').qrcode({ text: utf16to8("扫码跳转地址"), //扫码跳转地址 height: 200, //二维码高度 width: 200, //二维码宽度 src: “可访问的图片url” //可访问的图片url });
1 <div id="div_qr">//存放二维码的容器 2 <div id="qr_container" style="margin: auto; position: relative;"> 3 </div> 4 </div> 5 <!-- 用来校验该浏览器是否支持HTML5 --> 6 <canvas id="Canvas"></canvas>