记录一下最近的工作难点,之一...

首先本项目使用的是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">

添加qrcodeUrldata部分并更新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内置浏览器中无法显示问题的更多相关文章

  1. 【thinkphp5.1】 endroid/qrcode 二维码生成

    composer 链接: https://packagist.org/packages/endroid/qrcode 注意:PHP版本 要求 7.1+ 1. 使用 composer 安装 endroi ...

  2. 使用扫描二维码打开app

    应该不少人遇到过这种需求,扫描二维码打开app如果用户没有这个app则提示它跳转. 用网页直接来调用app是不打可能的,必须原生那边先做一些配置. 首先,安卓和苹果的调用方法是不同的. 所以我们需要先 ...

  3. iOS - QRCode 二维码

    1.QRCode 在 iOS7 以前,在 iOS 中实现二维码和条形码扫描,我们所知的有,两大开源组件 ZBar 与 ZXing. 这两大组件我们都有用过,这里总结下各自的缺点: 1.ZBar 在扫描 ...

  4. (转)QRCODE二维码介绍及常用控件推荐

    什么是QR Code码? QR Code码是由日本Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大.可靠性高.可表示汉字及图象多种文字信息.保密防 ...

  5. 手机扫描二维码下载APP,根据操作系统不同自动下载

    Android和IOS手机扫描二维码下载APP,根据OS不同,自动处理相应下载操作.IOS自动跳转至AppStore应用下载页,Android自动下载应用的apk包. <script type= ...

  6. 生成扫描二维码下载app的二维码的方法

    进入APP store苹果应用程序商店,根据分类找到你要生成二维码的APP,然后在浏览器连接里找到ID后的一串数字就是APP的应用ID了. 安卓系统的appid 在电脑浏览器中打开应用宝官网,http ...

  7. jQuery生成QRcode二维码

    jQuery生成QRcode二维码示例 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  8. PHP生成QRCode二维码

    php生成QRCode二维码示例 <?php //引入 phpqrcode 类库 //phpqrcode下载地址:https://github.com/t0k4rt/phpqrcode //或从 ...

  9. 用CIFilter生成QRCode二维码图片

    用CIFilter生成QRCode二维码图片 CIFilter不仅仅可以用来做滤镜,它还可以用来生成二维码. CIFilterEffect.h + CIFilterEffect.m // // CIF ...

  10. 用Java画QRCode二维码

    支付宝.微信扫码支付的二维码,第三方的类库QRCode.jar 还是很好用的.下面贴出来这个东东生成二维码的代码. 使用时注意包括图片地址.编码内容.图片属性等几个参数,支付宝的它们的扫码回调地址. ...

随机推荐

  1. Git 基本配置与常用命令

    使用Git会用到一些基本的Linux命令,比如: ls/ll   查看当前目录 cat   查看文件内容 touch   创建文件 vi   vi编辑器(使用vi编辑器方便展示效果) 安装成功 右击桌 ...

  2. QT数据可视化框架编程实战之三维散点图从入门到精通_补天云QT技术培训专家

    简介 本文将介绍支持GPU图形硬件加速的QT数据可视化框架编程实战之三维散点图从入门到精通_补天云QT技术培训专家.本文将创建一个含有三个序列的三维散点图,同时设定了坐标轴的标题和标签,使得用户点击表 ...

  3. 使用 fabric.js 开发移动端 H5 图片编辑器

    大家好,我是开源图片编辑器的 https://github.com/ikuaitu/vue-fabric-editor 的作者,它是一款基于 PC 版本的开源图片编辑器. 最近很多开发者咨询,是否可以 ...

  4. PasteForm最佳CRUD实践,实际案例PasteTemplate详解(一)

    本文将介绍soft.pastecode.cn出品的PasteForm,PasteForm是贴代码使用Dto思想实现的CRUD的一个组件,或者说输出一个思想! 为啥我觉得是最佳的CRUD呢?先结合你的实 ...

  5. Springboot自定义Prometheus采集指标

    添加依赖 <!--增加Prometheus依赖--> <dependency> <groupId>org.springframework.boot</grou ...

  6. CMake 属性之全局属性

    [写在前面] CMake 的全局属性是指在 CMake 配置过程中,对整个项目范围生效的设置. 这些属性不同于目标 ( Target ) 属性或目录 ( Directory ) 属性,后者仅对特定的目 ...

  7. Android USB 整条通知链分析

    以Android13 为例:在Android 13中,USB插入拔出事件的通知链从硬件层到应用层,依次经过硬件.内核.HAL.Framework.以及应用广播等多个模块,整个流程涉及的具体文件和逻辑如 ...

  8. Android 常用的性能分析工具详解:GPU呈现模式

    此篇将重点介绍几种常用的Android性能分析工具: 一.Logcat 日志 选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗.当我们打开一个Activit ...

  9. dwc3 usb debugfs(otg switch)

    1. driver driver/usb/dwc3/debugfs.c dwc3 probe ->dwc3 debugfs init() 2. enable debugfs mount -t d ...

  10. 01 如何具备编程思想(以 Python 举例)

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...