qrcode根据本地数据生成二维码第一次显示跨页面后显示异常
最近写二维码的时候,突然想起之前项目遇到过的一个问题,网上也没有这方面解答,想到大家今后可能也会遇到这类问题,在此记录下来,希望对你们有所帮助,大佬们不喜勿喷,qrcode配合画布canvas本地生成二维码的时候第一次能够正常显示,最下方会贴出代码
跨页面后显示异常
刚开始是有些头疼的,因为控制台一切正常,没有抛出错误,然后去看qrcode的参数属性也没有问题,我是多个页面需要生成多个二维码,封装了qrcode组件
F12逐步排查看html结构,生成多个二维码之后并没有销毁
所以第一想到的是可能是覆盖问题,我也不知道为什么关闭窗口后并没有销毁,那么就手动remove()销毁它吧,结果还是悲剧的,依旧没有效果,通过打印结果可以得知二维码是正常生成了的只是没有被渲染上去
难道是跨页面的时候当前页面的id和其他页面的id重复导致qrcode生成二维码成功了但是画布无法正常显示吗,那么只需要每个引用了qrcode组件的页面都传一个唯一的值过来做id就行了,抱着试一试的态度我再次打开了vscode,将父组件的name传了过来
父组件
子组件id
之后再获取到nameOn生成二维码,还挺好用
<div>
<!-- 单据二维码-->
<el-table-column :label="$t('receipt.orderQRCode')"
header-align="center"
align="center"
min-width="150">
<template slot-scope="scope">
<el-button type="primary" @click="createORCode(scope.row.receiptOrder)">
{{$t('receipt.generateQRcode')}}
</el-button>
</template>
</el-table-column>
/**
* 生成二维码
*/
createORCode (orderNumber) {
this.codeDialogVisible = true
this.orderNumber = orderNumber
this.$nextTick(() => {
this.$refs.codeDialog.init()
})
},
qrcode公共组件
<template>
<!-- 二维码 -->
<el-dialog
width="400px"
:title="$t('receipt.viewQRCode')"
:close-on-click-modal="false"
:visible.sync="visible"
@closed="visible = false"
:append-to-body="true"
>
<el-container style="margin-left: 5px">
<el-header style="height: 15px">
{{ $t("receipt.documentNo") + ":" + orderNumber }}
</el-header>
<el-main>
<canvas :id="nameOn" class="canvas"></canvas>
</el-main>
</el-container>
</el-dialog>
</template> <script>
import QRCode from 'qrcode' export default {
name: 'QRCode',
props: {
orderNumber: {
type: String,
default: ''
},
nameOn: {
type: String,
default: ''
}
},
data () {
return {
visible: false
}
},
methods: {
// 初始化
init () {
this.visible = true
this.$nextTick(() => {
console.log(this.orderNumber, 'orderNumber')
// console.log(this.nameOn, 'name')
if (this.orderNumber) {
// this.viewImgVisible = true
// 生成二维码
let opts = {
errorCorrectionLevel: 'H',
type: 'image/jpeg',
rendererOpts: {
quality: 0.3
}
}
console.log(opts, 'opts')
let canvasEle = document.querySelector(`#${this.nameOn}`)
QRCode.toDataURL(canvasEle, this.orderNumber, opts, function (err) {
if (err) throw err
})
}
})
}
}
}
</script> <style scoped>
.canvas {
margin-left: 10%;
width: 80% !important;
height: 80% !important;
}
</style>
qrcode根据本地数据生成二维码第一次显示跨页面后显示异常的更多相关文章
- Vue中qrcode的使用方法(生成二维码插件) / 前端页面根据URL链接生成二维码
1.下载 npm install qrcode --save-dev 2.引入(在所需要的页面中引入) import QRCode from "qrcode"; //引入生成二维码 ...
- Jquery.Qrcode在客户端动态生成二维码并添加自定义Logo
0 Jquery.Qrcode简介 Jquery.Qrcode.js是一个在浏览器端基于Jquery动态生成二维码的插件,支持Canvas和Table两种渲染方式,它的优点是在客户端动态生成,减轻了服 ...
- 在input中输入需要的数据,使用qrcode,点击生成二维码
话不多说直接上代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&quo ...
- 关于 QRCode 的问题[C# 生成二维码固定大小]
一直在纠结了一天多的问题:就是为什么生成的二维码会随着内容多少的变化而变化大小,但是为什么网上做出来的二维码内容变化但是大小却没有变化?刚开始的时候我就一直围绕着是不是根据缩略图来做的,但是这个方法行 ...
- jquery.qrcode.min.js——前端生成二维码
下载地址:[http://www.jq22.com/jquery-info294] demo1:[https://www.helloweba.com/view-blog-226.html] demo2 ...
- QRCode.jar生成二维码
参考http://www.oschina.net/code/snippet_2252392_45457 package com.ORcode; import java.awt.image.Buffer ...
- 使用Python的库qrcode生成二维码
现在有很多二维码的生成工具,在线的,或者安装的软件,都可以进行生成二维码.今天我用Python的qrcode库生成二维码.需要预先安装 Image 库 安装 用pip安装 # pip install ...
- 生成二维码的 jQuery 插件:jquery.qrcode.js的中文乱码问题
在使用jquery.qrcode.js这个插件生成二维码的时候发现并不能识别中文. 原因在于:jquery-qrcode是采用charCodeAt()方式进行编码转 换的. 而这个方法默认会获取它的U ...
- qrcode——js生成二维码
1.引入 qrcode.min.js(点击下载demo) 2.html: <div id="qrcode"></div> js: var qrcode = ...
- 一次使用Python连接数据库生成二维码并安装为windows服务的工作任务
最近有一个需求,在现有生产系统上的人员库中增加一个此人员关键信息的二维码,支持文字版和跳转版两种方式,与报表工具关联,可打印.以windows服务方式,定时检查,只要发现某人员没有此二维码信息,就生成 ...
随机推荐
- WeiXin.Export.20211230
C# 在PC上的通过蓝牙(bluetooth)发送数据到手机 将.net framework 4 部署在docker中的全过程(支持4.0 到 4.8,3.5应该也可以) .Net Core Http ...
- USB总线-Linux内核USB设备驱动ftrace分析(十一)
1.简介 USB Gadget Driver定义了很多trace event,使用者可以在用户空间通过ftrace接口,追踪USB Gadget Driver的行为. USB设备控制器驱动定义的tra ...
- excel导⼊功能的实现流程简要描述⼀下?
当时公司的场景⼤概⼀个excel⽂件⾥就⼏⼗条数据,量⽐较少,和后端商量之后制定了前端主导的⽅ 案,解析的过程放到了浏览器端做,当时是参考了⼀下vue-admin中的现成的⽅案 ⼤概流程是这样的,⼈事 ...
- Android复习(二)应用资源——>可绘制对象资源
可绘制对象资源是图形的一般概念,是指可在屏幕上绘制的图形,以及可使用 getDrawable(int) 等 API 检索,或应用到拥有 android:drawable 和 android:icon ...
- 如何在kubernetes环境中共享GPU
随着人工智能和大模型的快速发展,云上GPU资源共享变得必要,因为它可以降低硬件成本,提升资源利用效率,并满足模型训练和推理对大规模并行计算的需求. 在kubernetes内置的资源调度功能中,GPU调 ...
- 两小时学会使用dubbo(直接API、spring、注解、springboot)
最近上新的项目中需要用到dubbo,于是我决定温故知新,决定分享一下Dubbo在各种环境下的使用方式,本篇文章让你两小时就能学会使用dubbo 什么是Dubbo Dubbo是一个分布式.高性能.透明化 ...
- Matrix Calculus
1 Scalar Function \(\text{If }f(\mathbf{x})\in\mathbf{R},\mathrm{then}\) \[df=\frac{\partial f}{\par ...
- CSP2024 游记 - 未完
CSP2024 游记 \[written\ by:\mathbb{CMRHHH} \] 此时 :2024/10/25 ;18:30: 路途颠簸,作业先不写了吧--有些晕了,正在听杰伦的仙乐: CCF真 ...
- 循环程序结构设计(python)
文章目录 1.基本概念 2.for循环 2.1 for循环基本结构 2.2 实例介绍 2.2.1 循环输出字符 2.2.2循环输出2000以内的素数 3.whlie循环 3.1 while循环基本结构 ...
- 你还用ES存请求日志?ClickHouse+Vector打造最强Grafana日志分析看板
为什么要做NGINX日志分析看板 Grafana官网的dashboards有NGINX日志采集到ES数据源的展示看板,也有采集到LOKI数据源的展示看板,唯独没有采集到ClickHouse数据源的展示 ...