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 相关文章推荐
网上应用的一个不错common.js脚本
Aug 08 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
Apr 02 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
Jul 10 Javascript
JavaScript原型链示例分享
Jan 26 Javascript
21个JavaScript事件(Events)属性汇总
Dec 02 Javascript
jQuery中:reset选择器用法实例
Jan 04 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
Sep 08 Javascript
jQuery图片切换动画特效
Nov 02 Javascript
jQuery中的on与bind绑定事件区别实例详解
Feb 28 Javascript
初探js和简单隐藏效果的实例
Nov 23 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
Jan 08 Javascript
解决layer弹层遮罩挡住窗体的问题
Aug 17 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定时计划任务的实现方法详解
2013/06/06 PHP
php mail to 配置详解
2014/01/16 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
Python中字典(dict)合并的四种方法总结
2017/08/10 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
在pytorch中对非叶节点的变量计算梯度实例
2020/01/10 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
《童年的发现》教学反思
2014/02/14 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
安全月活动总结
2014/05/05 职场文书
派出所所长先进事迹
2014/05/19 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
孔庙导游词
2015/02/04 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
我去timi了,一起去timi是什么意思?
2022/04/13 杂记