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 实现checkbox全选,反选,全不选等功能代码(奇数)
Oct 24 Javascript
JS如何将UTC格式时间转本地格式
Sep 04 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
JS实现切换标签页效果实例代码
Nov 01 Javascript
JavaScript中匿名、命名函数的性能测试
Sep 04 Javascript
jQuery判断一个元素是否可见的方法
Jun 05 Javascript
javascript函数自动执行常用方法汇总
Mar 28 Javascript
JQuery解析XML数据的几个简单实例
May 18 Javascript
微信开发 消息推送实现代码
Oct 21 Javascript
jquery删除数组中重复元素
Dec 05 Javascript
简单实现node.js图片上传
Dec 18 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
Oct 24 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抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
jQuery 注意事项 与原因分析
2009/04/24 Javascript
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
微信小程序实现全国机场索引列表
2018/01/31 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
Python操作csv文件实例详解
2017/07/31 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
经理秘书岗位职责
2013/11/14 职场文书
客服服务心得体会
2013/12/30 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
环保宣传标语
2014/06/12 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
2014年乡镇民政工作总结
2014/12/02 职场文书
新闻稿标题
2015/07/18 职场文书
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers