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 相关文章推荐
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
Mar 25 Javascript
简约JS日历控件 实例代码
Jul 12 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
Jquery解析json字符串及json数组的方法
May 29 Javascript
JS+CSS实现滑动切换tab菜单效果
Aug 25 Javascript
jquery+json实现数据二级联动的方法
Nov 28 Javascript
react中实现搜索结果中关键词高亮显示
Jul 31 Javascript
如何使用vuex实现兄弟组件通信
Nov 02 Javascript
Nuxt.js实战和配置详解
Aug 05 Javascript
vue跳转方式(打开新页面)及传参操作示例
Jan 26 Javascript
JavaScript数组排序的六种常见算法总结
Aug 18 Javascript
原生JavaScript实现随机点名表
Jan 14 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应用提速面面观
2006/10/09 PHP
URL Rewrite的设置方法
2007/01/02 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
javascript之函数直接量(function(){})()
2007/06/29 Javascript
一个JS翻页效果
2007/07/23 Javascript
简明json介绍
2008/09/28 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
微信小程序实现动态获取元素宽高的方法分析
2018/12/10 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
JavaScript一元正号运算符示例代码
2019/06/30 Javascript
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
使用Python自动生成HTML的方法示例
2019/08/06 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
基于python plotly交互式图表大全
2019/12/07 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
python操作redis数据库的三种方法
2020/09/10 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
经典演讲稿汇总
2014/05/19 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
明确岗位职责
2015/02/14 职场文书
师范生见习自我总结
2015/06/23 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js