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 相关文章推荐
jQuery使用手册之二 DOM操作
Mar 24 Javascript
HTML中Select不用Disabled实现ReadOnly的效果
Apr 07 Javascript
Json和Jsonp理论实例代码详解
Nov 15 Javascript
jquery实现倒计时代码分享
Jun 13 Javascript
XML、HTML、CSS与JS的区别整理
Feb 18 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
Mar 24 jQuery
js oncontextmenu事件使用详解
Mar 25 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
vue webpack开发访问后台接口全局配置的方法
Sep 18 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
vue 实现v-for循环回来的数据动态绑定id
Nov 07 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
Nov 06 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 构造函数construct的前下划线是双的_
2009/12/08 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
node.js中的console用法总结
2014/12/15 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
JavaScript基于数组实现的栈与队列操作示例
2018/12/22 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
Python创建文件和追加文件内容实例
2014/10/21 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
python中cPickle类使用方法详解
2018/08/27 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
大学四年个人自我小结
2014/03/05 职场文书
《花木兰》教学反思
2014/04/09 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
商业项目策划方案
2014/06/05 职场文书
大学奖学金获奖感言
2014/08/15 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
2014年民政工作总结
2014/11/26 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
升学宴学生致辞
2015/09/29 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers