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 相关文章推荐
jquery.alert 弹出式复选框实现代码
Jun 15 Javascript
jQuery代码优化 遍历篇
Nov 01 Javascript
js opener的使用详解
Jan 11 Javascript
JS实现黑客帝国文字下落效果
Sep 01 Javascript
JavaScript 是什么意思
Sep 22 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
JS实现的按钮点击颜色切换功能示例
Oct 19 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
Vue Components 数字键盘的实现
Sep 18 Javascript
vue遍历对象中的数组取值示例
Nov 07 Javascript
如何使用JavaScript策略模式校验表单
Apr 29 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
php网站地图生成类示例
2014/01/13 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
简单介绍Python中的RSS处理
2015/04/13 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
Django密码系统实现过程详解
2019/07/19 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
离婚协议书怎么写
2015/01/26 职场文书
小学少先队活动总结
2015/05/08 职场文书
美丽的大脚观后感
2015/06/03 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
Redis三种集群模式详解
2021/10/05 Redis