[天坑]之qrcode二维码在app内置浏览器中无法显示问题
记录一下最近的工作难点,之一...
首先本项目使用的是qrcode-generator,市面上生成二维码的第三方库有很多qrcode.vue、qrcode、QRious等等
<div id="qrcode"></div>
import QRCode from "qrcode-generator";
data() {
return {
tenant: "turnchartenantkey",
url: "",
id: "",
storeObj: {},
};
},
created() {
this.generateQRCode();
// this.drawQrc();
},
methods: {
generateQRCode() {
//省略*****多判断及请求
// 获取容器元素;
const container = document.getElementById("qrcode");
// 创建二维码生成器实例
const qr = QRCode(0, "L");
// 设置二维码内容
this.url = `your url`;
console.log(this.url, "url");
qr.addData(this.url);
qr.make();
// 渲染二维码到容器元素中
container.innerHTML = qr.createSvgTag({
scalable: true,
});
}
//css
#qrcode {
width: 300px;
height: 300px;
margin: 0 auto;
padding: 25px;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
看着挺正常的,就是普通的qrcode生成二维码,暗藏玄机

是的,app内置浏览器中无法显示二维码,尝试过各种方法,排除了各种可能导致错误的原因,最后确定在手机可能对svg的编译存在一些误差,要优化代码并使二维码在应用程序的嵌入式浏览器中正常显示,首先需要将其转换为数据 URL 并使用img标签来显示二维码,而不是将二维码呈现为 SVG 直接插入 DOM。这种方法更兼容不同的浏览器和嵌入式 Web 视图。
将模板部分中的<div id="qrcode"></div>替换为。
<img id="qrcode" :src="qrcodeUrl" alt="QRcode">
添加qrcodeUrl到data部分并更新generateQRCode设置二维码数据 URL 的方法,qrcodeUrl而不是直接修改 DOM。
下面是更改后的代码
<template>
<div>
<div class="qr-card">
<div class="qrcode-container">
<div v-if="loading" class="loading-spinner"></div>
<img v-else id="qrcode" :src="qrcodeUrl" alt="QR Code" />
</div>
</div>
</div>
</template> <script>
import QRCode from "qrcode-generator"; export default {
name: "QRcode",
data() {
return {
qrcodeUrl: "",
loading: true,
};
},
created() {
this.generateQRCode();
},
methods: {
generateQRCode() {
const qr = QRCode(0, "L");
this.url = `your url`;
qr.addData(this.url);
qr.make();
const svgTag = qr.createSvgTag({ scalable: true }); // 将 SVG 转换为数据 URL
const svgBlob = new Blob([svgTag], { type: "image/svg+xml" });
const svgUrl = URL.createObjectURL(svgBlob);
this.qrcodeUrl = svgUrl; // 不再需要时释放对象 URL
this.$once("hook:beforeDestroy", () => {
URL.revokeObjectURL(svgUrl);
}); this.loading = false;
},
},
};
</script> <style lang="less" scoped>
* {
box-sizing: border-box;
} .qrcode-container {
width: 300px;
height: 300px;
margin: 0 auto;
padding: 25px;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
} .loading-spinner {
width: 50px;
height: 50px;
border-radius: 50%;
border: 3px solid #ccc;
border-top-color: #333;
animation: spin 1s linear infinite;
} @keyframes spin {
to {
transform: rotate(360deg);
}
}
}
</style>
在此更新的代码中,SVG QR 代码使用转换为数据 URL"URL.createObjectURL"并分配给"qrcodeUrl". 该"URL.revokeObjectURL"方法在组件销毁之前调用以释放对象 URL。<img>然后使用带有qrcodeUrlas属性的标签显示 QR 码src,并且添加加载中loading,该loading属性设置为true,表示加载状态处于活动状态。二维码生成显示成功后,loading设置为false,显示二维码时隐藏加载框。
[天坑]之qrcode二维码在app内置浏览器中无法显示问题的更多相关文章
- 【thinkphp5.1】 endroid/qrcode 二维码生成
composer 链接: https://packagist.org/packages/endroid/qrcode 注意:PHP版本 要求 7.1+ 1. 使用 composer 安装 endroi ...
- 使用扫描二维码打开app
应该不少人遇到过这种需求,扫描二维码打开app如果用户没有这个app则提示它跳转. 用网页直接来调用app是不打可能的,必须原生那边先做一些配置. 首先,安卓和苹果的调用方法是不同的. 所以我们需要先 ...
- iOS - QRCode 二维码
1.QRCode 在 iOS7 以前,在 iOS 中实现二维码和条形码扫描,我们所知的有,两大开源组件 ZBar 与 ZXing. 这两大组件我们都有用过,这里总结下各自的缺点: 1.ZBar 在扫描 ...
- (转)QRCODE二维码介绍及常用控件推荐
什么是QR Code码? QR Code码是由日本Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大.可靠性高.可表示汉字及图象多种文字信息.保密防 ...
- 手机扫描二维码下载APP,根据操作系统不同自动下载
Android和IOS手机扫描二维码下载APP,根据OS不同,自动处理相应下载操作.IOS自动跳转至AppStore应用下载页,Android自动下载应用的apk包. <script type= ...
- 生成扫描二维码下载app的二维码的方法
进入APP store苹果应用程序商店,根据分类找到你要生成二维码的APP,然后在浏览器连接里找到ID后的一串数字就是APP的应用ID了. 安卓系统的appid 在电脑浏览器中打开应用宝官网,http ...
- jQuery生成QRcode二维码
jQuery生成QRcode二维码示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...
- PHP生成QRCode二维码
php生成QRCode二维码示例 <?php //引入 phpqrcode 类库 //phpqrcode下载地址:https://github.com/t0k4rt/phpqrcode //或从 ...
- 用CIFilter生成QRCode二维码图片
用CIFilter生成QRCode二维码图片 CIFilter不仅仅可以用来做滤镜,它还可以用来生成二维码. CIFilterEffect.h + CIFilterEffect.m // // CIF ...
- 用Java画QRCode二维码
支付宝.微信扫码支付的二维码,第三方的类库QRCode.jar 还是很好用的.下面贴出来这个东东生成二维码的代码. 使用时注意包括图片地址.编码内容.图片属性等几个参数,支付宝的它们的扫码回调地址. ...
随机推荐
- Spring —— AOP(面向切面编程)
AOP(Aspect Oriented Programming)简介 面向切面编程,一种编程范式,指导开发者如何组织程序结构 作用:在不惊动原始设计的基础上为其进行功能增强 Spring理念:无入侵式 ...
- IDEA 换了电脑,如何导入和导出配置?
前言 我们在使用IDEA开发时,经常会设置各种各样的配置,时间一长,就会有很多个性化的东西.用起来也越来越顺手. 不过这里可能会有个问题,那就是哪一天我们要换个电脑了,或者想安装新版本的IDEA时 ...
- 利用csv文件信息,将图片名信息保存到csv文件当中
我们可以利用train.csv文件信息, 再结合给定的文件路径(path)信息,可以将给定字目录下的图片名信息整合到scv文件当中. train.csv文件格式: 图片名信息: 代码如下: from ...
- 现代化 React UI 库:Material-UI 详解!
随着 React 在前端开发中的流行,越来越多的 UI 框架和库开始涌现,以帮助开发者更高效地构建现代化.响应式的用户界面.其中,Material-UI 是基于 Google Material Des ...
- 云原生周刊:Harbor v2.11 版本发布 | 2024.6.17
开源项目推荐 Descheduler Descheduler 是一个工具,可用于优化 Kubernetes 集群中 Pod 的部署位置.它可以找到可以移动的 Pod,并将其驱逐,让默认调度器将它们重新 ...
- 云原生周刊:Kubernetes v1.29 新特性一览 | 2023.12.11
开源项目推荐 kubedog Kubedog 是一个用于在 CI/CD 部署管道中监视和跟踪 Kubernetes 资源的库. 这个库被用于 werf CI/CD 工具中,在部署过程中跟踪资源. Ru ...
- NeuVector 会是下一个爆款云原生安全神器吗?
近日一则<SUSE 发布 NeuVector:业内首个开源容器安全平台>的文章被转载于各大 IT 新闻网站.作为 SUSE 家族的新进成员,在 3 个月后便履行了开源承诺,着实让人赞叹.那 ...
- Linux(Redhat 7.6)安装PG(Postgresql 9.6.0)
Linux(Redhat 7.6)安装PG(Postgresql 9.6.0) 1. 摘要 需要在Linux上安装postgres数据库,指定安装目录,简单测试各种配置.安装包下载地址: //源码 h ...
- 《使用Gin框架构建分布式应用》阅读笔记:p127-p142
<用Gin框架构建分布式应用>学习第9天,p127-p142总结,总计16页. 一.技术总结 1.Authentication方式汇总 (1)API keys API keys 认证方式示 ...
- Ubuntu 22.04 LTS 在线/离线安装 Docker
Docker 安装方式 时间:2024-10 准备环境 root@ubuntu2204:~# hostnamectl Static hostname: ubuntu2204 Icon name: co ...