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 相关文章推荐
escape、encodeURI 和 encodeURIComponent 的区别
Mar 02 Javascript
javascript 随机展示头像实现代码
Dec 06 Javascript
jQuery动态添加、删除元素的方法
Jan 09 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
Jun 23 Javascript
JS实现双击编辑可修改状态的方法
Aug 14 Javascript
jquery转盘抽奖功能实现
Nov 13 Javascript
详解用vue-cli来搭建vue项目和webpack
Apr 20 Javascript
JavaScript设计模式之代理模式详解
Jun 09 Javascript
JS实现的邮箱提示补全效果示例
Jan 30 Javascript
使用vue-aplayer插件时出现的问题的解决
Mar 02 Javascript
微信小程序上传文件到阿里OSS教程
May 20 Javascript
JavaScript如何实现防止重复的网络请求的示例
Jan 28 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笔记之常用文件操作
2010/10/12 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
php mysql like 实现多关键词搜索的方法
2016/10/29 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
html数组字符串拼接的最快方法
2009/09/16 Javascript
Javascript 圆角div的实现代码
2009/10/15 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
浅谈vue 单文件探索
2018/09/05 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
python实现查询苹果手机维修进度
2015/03/16 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
《故都的秋》教学反思
2014/04/15 职场文书
星级党支部申报材料
2014/05/31 职场文书
分公司经理任命书
2014/06/05 职场文书
房产协议书范本2014
2014/09/30 职场文书
政工师工作总结2015
2015/05/26 职场文书
职工宿舍管理制度
2015/08/05 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL