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 相关文章推荐
extjs 学习笔记(二) Ext.Element类
Oct 13 Javascript
返回上一页并自动刷新的JavaScript代码
Feb 19 Javascript
代码获取历史上的今天发生的事
Apr 11 Javascript
js单词形式的运算符
May 06 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
Jun 03 Javascript
AngularJS表格添加序号的方法
Mar 03 Javascript
用jQuery实现圆点图片轮播效果
Mar 19 Javascript
javascript 判断一个对象为数组的方法
May 03 Javascript
vue实现点击隐藏与显示实例分享
Feb 13 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
Sep 03 Javascript
vue 路由子组件created和mounted不起作用的解决方法
Nov 05 Javascript
JavaScript eval()函数定义及使用方法详解
Jul 07 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大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
thinkphp缓存技术详解
2014/12/09 PHP
PHP整合PayPal支付
2015/06/11 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
微信小程序实现自上而下字幕滚动
2018/07/14 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
python的dataframe和matrix的互换方法
2018/04/11 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
英国女装网上商店:I Saw It First
2018/10/18 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
护理不良事件检讨书
2014/02/06 职场文书
读群众路线心得体会
2014/03/07 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
晚会闭幕词
2015/01/28 职场文书
2015大学生求职信范文
2015/03/20 职场文书
2017春节晚会开幕词
2016/03/03 职场文书