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获取GridView中用户点击控件的行号,列号
Apr 14 Javascript
JavaScript中null与undefined分析
Jul 25 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
Jan 18 Javascript
js方法数据验证的简单实例
Sep 17 Javascript
javascript实现的左右无缝滚动效果
Sep 19 Javascript
jQuery实现模糊查询的方法分析
May 10 jQuery
js中实例与对象的区别讲解
Jan 21 Javascript
深入理解Vue keep-alive及实践总结
Aug 21 Javascript
小谈angular ng deploy的实现
Apr 07 Javascript
Vue如何基于es6导入外部js文件
May 15 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
Sep 11 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
移动端图片上传旋转、压缩问题的方法
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
最小化数据传输――在客户端存储数据
2006/10/09 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
vue生命周期实例小结
2018/08/15 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
python随机生成库faker库api实例详解
2019/11/28 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
英国女士家居服网站:hush
2017/08/09 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
个人找工作的自我评价
2013/10/17 职场文书
护理专业自荐信
2013/12/03 职场文书
无偿献血倡议书
2014/04/14 职场文书
毕业生对母校寄语
2015/02/26 职场文书
保险内勤岗位职责
2015/04/13 职场文书
公司禁烟通知
2015/04/23 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js