QRCode.js二维码生成并能长按识别


Posted in Javascript onOctober 16, 2018

QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。

首先引入QRCode.js文件,下载地址

如果生成二维码的信息是固定不变的,那么当然不需要如此这般,网上有好多现成的二维码生成器,直接用就好。

可是,我的需求是这样的,二维码用于在微信或QQ中分享,根据不同的用户信息分别生成不同的二维码,这样就不能偷懒,就得用代码生成了,并且生成的二维码支持长按识别进入。

话不多说,直接上干货:

html部分:

<div id="codeBox">
 <div id="qrDiv" style="display: none;"></div>
 <div id="qrcode"></div> 
</div>

js部分:实例化并进行参数设置:

var user_id="" //用户ID
user_id=getQueryString('user_id'); //获取user_id参数
var url= '' //请求url
  $(function(){
  //生成二维码
  var downUrl=url+user_id;
  var qrcode = new QRCode("qrDiv", {
    text: utf16to8(Url),
    render: "canvas", //渲染方式有table方式(IE兼容)和canvas方式
    width: 128,
    height: 128,
    typeNumber:-1,//计算模式
    colorDark : "#000000",   //前景色
    colorLight : "#ffffff",   //背景色
    correctLevel : QRCode.CorrectLevel.H   //容错级别
  });
  var mycanvas1=document.getElementsByTagName('canvas')[0];
  //将转换后的img标签插入到html中 
  var img=convertCanvasToImage(mycanvas1); 
   $('#qrcode').append(img);//imagQrDiv表示你要插入的容器id    
  })

  //从 canvas 提取图片 image 
  function convertCanvasToImage(canvas) { 
  //新Image对象,可以理解为DOM 
  var image = new Image(); 
  // canvas.toDataURL 返回的是一串Base64编码的URL,当然,浏览器自己肯定支持 
    // 指定格式 PNG 
  image.src = canvas.toDataURL("image/png"); 
    return image; 
  } 

  //获取请求参数值
  function getQueryString(name) {
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  var r = window.location.search.substr(1).match(reg);
  if (r != null) {
    return unescape(r[2]);
  }
  return null; 
   }

  //中文编码格式转换
  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;
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 流畅动画实现原理
Sep 08 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
May 14 Javascript
JS获得URL超链接的参数值实例代码
Jun 21 Javascript
JavaScript 命名空间 使用介绍
Aug 29 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
Mar 03 Javascript
JS实现具备延时功能的滑动门菜单效果
Sep 17 Javascript
Bootstrap中CSS的使用方法
Feb 17 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
Jun 12 Javascript
javascript正则表达式之分组概念与用法实例
Jun 16 Javascript
layui导航栏实现代码
May 19 Javascript
vue 打包后的文件部署到express服务器上的方法
Aug 09 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
Sep 15 Javascript
移动端图片上传旋转、压缩问题的方法
Oct 16 #Javascript
JavaScript实现表单注册、表单验证、运算符功能
Oct 15 #Javascript
从零开始搭建vue移动端项目到上线的步骤
Oct 15 #Javascript
jQuery轻量级表单模型验证插件
Oct 15 #jQuery
详解ESLint在Vue中的使用小结
Oct 15 #Javascript
手淘flexible.js框架使用和源代码讲解小结
Oct 15 #Javascript
javascript匿名函数中的'return function()'作用
Oct 15 #Javascript
You might like
php中日期加减法运算实现代码
2011/12/08 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
node.js中使用Export和Import的方法
2017/09/18 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
Python素数检测的方法
2015/05/11 Python
深入浅析Python中的yield关键字
2018/01/24 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
Java面向对象面试题
2016/12/26 面试题
Servlet都有哪些方法?主要作用是什么?
2014/03/04 面试题
在宿舍喝酒的检讨书
2014/09/28 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
学习焦裕禄观后感
2015/06/09 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
sql server 累计求和实现代码
2022/02/28 SQL Server