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服务方式,定时检查,只要发现某人员没有此二维码信息,就生成 ...
随机推荐
- HTML – Naming Conversion
有些是市场的规范, 有些是我的规范 Tag Name Lower Case 参考: W3Schools Attributes Name Lower Case 参考: W3Schools Always ...
- Windows 中的硬链接、目录联接(软链接)、符号链接、快捷方式
在Linux文件系统中经常提及硬链接(Hard Link)和符号链接(Symbolic Link),Windows中也可以创建链接,但由于丰富的图形界面操作,很少提及链接.Windows 的 NTFS ...
- PHP运算符优先级(摘自在线工具)
PHP运算符优先级 结合方向 运算符 附加信息 非结合 clone new clone 和 new 左 [ array() 非结合 ++ -- 递增/递减运算符 非结合 ~ - (int) (floa ...
- excel江湖异闻录--渣渣
有朋友问过我,为什么要写这些,细细思量,一来我喜欢这个纯粹的江湖,二则向这些纯粹的高手.大神致敬,三是纪念一下自己学习EXCEL的历程. 其实,每一个篇章都有一个逻辑,只不过这个逻辑,不是按照实力的高 ...
- linux内核 快速分片,技术|Linux slabtop命令——显示内核片缓存信息
Linux内核需要为临时对象如任务或者设备结构和节点分配内存,缓存分配器管理着这些类型对象的缓存.现代Linux内核部署了该缓存分配器以持有缓存,称之为片.不同类型的片缓存由片分配器维护.本文集中讨论 ...
- markdown.css 设置文章的样式
返回的详情文章内容是标签加内容文字,使用 markdown,css 渲染样式 : .markdown-body .octicon { display: inline-block; fill: curr ...
- Blazor Hybrid 实战体验:那些你可能没预料到的坑没预料到的坑
前言 昨天写了一篇介绍 Blazor Hybrid 技术的文章,但限于篇幅,一些问题未能深入探讨.今天,我想继续记录使用 Blazor Hybrid 过程中遇到的几个问题,以及这个技术目前的一些局限性 ...
- find命令,查找文件
find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限.大小.时间.inode 号等来搜索文件. [root@localhost ~]#find 搜索路径 [选项] 搜 ...
- 王树森Attention与Self-Attention学习笔记
目录 Seq2Seq + Attention Attention的原理 方法一(Used in the original paper) 方法二(more popular,the same to Tra ...
- day12-包机制
包机制 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包语句的语法格式为: 包的本质就是文件夹 package pkg1[.pkg2[.pkg3...]]; 一般公司域名倒置作为 ...