qrcode生成二维码微信长按无法识别问题的解决


Posted in Javascript onApril 04, 2019

最近用QRCode.js 生成二维码之后,发现在小米和华为手机的微信上面页面长按识别不了,苹果和其他手机浏览器是正常的。qrcode在页面生成会生成一个canvas标签和一个img标签,在电脑浏览器上调试的时候发现生成二维码之后canvas标签是会自动隐藏的,然后展示img标签,然后通过vConsole 发现在小米或者华为手机上生成的二维码是通过canvas展示的,img标签被隐藏,而且img.src没有任何内容。怀疑是浏览器兼容问题。

jquery.qrcode.js 是一个纯浏览器 生成 QRcode 的 jQuery 插件((可以从https://github.com/jeromeetienne/jquery-qrcode 获取)),它使用非常简单,生成的 QRcode 无需下载图片,并且不依赖第三方服务,插件压缩之后大小小于 4K。

QRCode.js 基本用法

引入JS库

<script src="jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script>
 <script src="jquery.qrcode.min.js" type="text/javascript" charset="utf-8"></script>

html部分

<div id="qrcode"></div>

js部分

// 设置要生成二维码的链接
new QRCode(document.getElementById("qrcode"), codeUrl);

或者

var qrcode = new QRCode("qrcode", {
 text: codeUrl,
 width: 128,
 height: 128,
 colorDark : "#000000",
 colorLight : "#ffffff",
 correctLevel : QRCode.CorrectLevel.H //容错级别
});

容错级别,可设置为:
QRCode.CorrectLevel.L
QRCode.CorrectLevel.M
QRCode.CorrectLevel.Q
QRCode.CorrectLevel.H

清除重新生成

qrcode.clear(); // clear the code.
qrcode.makeCode("http://naver.com"); // make another code.

浏览器支持

IE6~10, Chrome, Firefox, Safari, Opera, Mobile Safari, Android, Windows Mobile, ETC.

长按识别方式

解决思路是从canvas中提取图片base64自己生成图片

html部分

<div id="codeDiv" style="display: none;"></div>
<div id="qrcode"></div>

js部分

var qrcode = new QRCode("codeDiv", {
  text: codeUrl,
  render: "canvas", //渲染方式指定canvas方式
  width: 128,
  height: 128,
  typeNumber:-1,//计算模式
  colorDark : "#000000", 
  colorLight : "#ffffff", 
  correctLevel : QRCode.CorrectLevel.H 
 });
 var canvas=document.getElementsByTagName('canvas')[0];
 var img = convertCanvasToImage(canvas);
 $('#qrcode').append(img);// 添加DOM
 //从 canvas 提取图片 image 
 function convertCanvasToImage(canvas) { 
  //新建Image对象
  var image = new Image(); 
  // canvas.toDataURL 返回的是一串Base64编码的URL
  image.src = canvas.toDataURL("image/png"); 
  return image; 
 }

参考

QRCode.js 二维码生成并能够长按识别
GitHub

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js form action动态修改方法
Nov 04 Javascript
Javascript typeof 用法
Dec 28 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
Jun 14 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
js利用prototype调用Array的slice方法示例
Jun 09 Javascript
js匿名函数的调用示例(形式多种多样)
Aug 20 Javascript
jquery滚动加载数据的方法
Mar 09 Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 Javascript
AngularJS中的包含详细介绍及实现示例
Jul 28 Javascript
jquery实现表单获取短信验证码代码
Mar 13 Javascript
vue.js实现备忘录功能的方法
Jul 10 Javascript
微信小程序动态增加按钮组件
Sep 14 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
Apr 04 #jQuery
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
Apr 04 #Javascript
JS实现图片轮播效果实例详解【可自动和手动】
Apr 04 #Javascript
Vue传参一箩筐(页面、组件)
Apr 04 #Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
Apr 04 #Javascript
小程序getLocation需要在app.json中声明permission字段
Apr 04 #Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 #Javascript
You might like
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
php通过文件流方式复制文件的方法
2015/03/13 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
php中的钩子理解及应用实例分析
2019/08/30 PHP
在js中单选框和复选框获取值的方式
2009/11/06 Javascript
javascript 全等号运算符使用说明
2010/05/31 Javascript
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
对layui数据表格动态cols(字段)动态变化详解
2019/10/25 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
Python短信轰炸的代码
2020/03/25 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
学生检讨书怎么写?
2014/10/10 职场文书
捐资助学感谢信
2015/01/21 职场文书
项目负责人岗位职责
2015/02/15 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
如何使用注解方式实现 Redis 分布式锁
2022/07/23 Redis