解决qrcode生成的二维码安卓手机长按不识别问题

解决qrcode生成的二维码安卓手机长按不识别问题

文章目录

问题描述toDataURL语法自己验证

问题描述

qrcode生成的二维码,在苹果等手机上长按可识别,在华为手机上长按没有反应,截图保存下来长按又可以识别。

问题原因 浏览器兼容问题 qrcode在页面生成二维码时,会生成一个canvas标签和一个img标签。在电脑浏览器上调试的时候,发现生成二维码之后canvas标签是会自动隐藏的,然后展示img标签,我们看到和识别的其实是图片。但是在华为手机上生成的canvas是不会隐藏的,我们看到的是canvas,所以无法识别,截图却可以。

解决办法 手动将canvas隐藏,获取生成的链接拼到图片里面。 html页面:

js

function makeQRCode() {

var qrcode = new QRCode(document.getElementById("QRCodeNone"), {

text: params,//二维码数据

width: 200,

height: 200

});

//在小米或者华为手机上生成的二维码是通过canvas展示的,img标签被隐藏,所以需要特殊处理一下,将canvas标签隐藏,拿到生成的url放到img里面再展示出来

var myCanvas = document.getElementsByTagName('canvas')[0];

var img = convertCanvasToImage(myCanvas);

$("#QRCode").append(img);

};

//将canvas返回的图片添加到image里

function convertCanvasToImage(canvas){

var image = new Image();

image.src = canvas.toDataURL("image/png");

return image;

}

toDataURL语法

canvas.toDataURL(type, encoderOptions); 返回一个包含图片展示的 data URI 参数 type 可选 图片格式,默认为image/png encoderOptions 可选 图片质量。取值范围为0到1。如果指定图片格式为image/jpeg或image/webp。如果超出取值范围,将会使用默认值0.92。其他参数会被忽略。

返回值 包含dataURI的DOMString。 DataURI格式:data:[][;base64],。其中mediatype声明了文件类型,遵循MIME规则,如“image/png”、“text/plain”;之后是编码类型,这里我们只涉及 base64;紧接着就是文件编码后的内容了。

原文链接:https://blog.csdn.net/weixin_40970987/article/details/94393259

自己验证

访客身份二维码

恭喜您,信息登记成功!

温馨提示:此二维码是您出入厂区的身份证明,请保存至手机相册!

相关推荐

2025中国移动流量查询全攻略:短信指令+操作指南+避坑指南
365bet官网平台

2025中国移动流量查询全攻略:短信指令+操作指南+避坑指南

西班牙男篮世界杯阵容名单公布最新,西班牙男篮历史最强阵容
365bet-亚洲版官网

西班牙男篮世界杯阵容名单公布最新,西班牙男篮历史最强阵容

乐堡啤酒劲道解读
英国365bet网址

乐堡啤酒劲道解读

yy积分有什么用?yy等级怎么算啊?
英国365bet网址

yy积分有什么用?yy等级怎么算啊?

围攻besiege官方正版
365bet官网平台

围攻besiege官方正版

王者荣耀被称为铠爹、铠皇、西北砍王的铠,为什么不好打高端局?
365bet-亚洲版官网

王者荣耀被称为铠爹、铠皇、西北砍王的铠,为什么不好打高端局?