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 相关文章推荐
JSQL 基于客户端的成绩统计实现方法
May 05 Javascript
关于javascript中this关键字(翻译+自我理解)
Oct 20 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
Feb 05 Javascript
深入理解javaScript中的事件驱动
May 21 Javascript
js和php如何获取当前url的内容
Sep 22 Javascript
用js模拟struts2的多action调用示例
May 19 Javascript
jQuery中eq()方法用法实例
Jan 05 Javascript
js实现宇宙星空背景效果的方法
Mar 03 Javascript
js通过classname来获取元素的方法
Nov 24 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
Apr 30 Javascript
VUE前后端学习tab写法实例
Aug 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
星际中的相关伤害
2020/03/04 星际争霸
php microtime获取浮点的时间戳
2010/02/21 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
JQuery 表单中textarea字数限制实现代码
2009/12/07 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
jquery cookie实现的简单换肤功能适合小网站
2013/08/25 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
关于python的list相关知识(推荐)
2017/08/30 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
2018/02/18 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
教学大赛获奖感言
2014/01/15 职场文书
中学生打架检讨书
2014/02/10 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
基层工作经历证明
2015/06/19 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python