Vue+Element页面生成快照截图

页面部分:

<template><div ref="homePage" class="home-container rel"><div class="snap-box abs"><div title="页面快照" class="z-pointer" @click="newSnapShot()"><img :src="snapCamera" alt="快照生成"></div></div><el-image-viewerv-if="imgUrl":on-close="()=>{imgUrl=''}":url-list="[imgUrl]" /></div>
</template>

js代码部分:

/*** 图片blob转图片base64* @param blob*/
export const blobToBase64 = (blob) => {return new Promise((resolve, reject) => {const fileReader = new FileReader();fileReader.onload = (e) => {resolve(e.target.result);};// readAsDataURLfileReader.readAsDataURL(blob);fileReader.onerror = () => {reject(new Error('blobToBase64 error'));};});
}import html2canvas from 'html2canvas';
import { blobToBase64 } from '@/utils/helper.js';export default {name: 'Home',components: {'el-image-viewer': () => import('element-ui/packages/image/src/image-viewer'),},data() {return {tooltipRemark,loading: false,imgUrl: '',};},methods: {// 生成快照newSnapShot() {this.loading = true;const { ClipboardItem } = window;html2canvas(this.$refs.homePage).then((canvas) => {// 将canvas转为blob对象canvas.toBlob(async (blob) => {if (typeof (navigator.clipboard) === 'undefined' && !ClipboardItem) {await blobToBase64(blob).then((res) => {this.imgUrl = res;this.$message({message: '快照生成成功',type: 'success',duration: 2000,});}).catch(() => {this.$message({message: '快照生成失败',type: 'warning',duration: 2000,});}).finally(() => {this.loading = false;});return;}// 将blob对象放入剪切板item中// eslint-disable-next-line no-undefconst data = [new ClipboardItem({ [blob.type]: blob })];// 写入剪切板,成功会执行resolve,失败则走rejectawait navigator.clipboard.write(data).then(() => {this.$message({message: '已保存到粘贴板',type: 'success',duration: 2000,});this.loading = false;}, () => {this.$message({message: '保存截图失败',type: 'warning',duration: 2000,});this.loading = false;});}, 'image/png');}).catch(() => {this.loading = false;});},},
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES分布式搜索-索引库操作

索引库操作 1、mapping映射属性 可以查看官方文档学习&#xff1a;ES官方手册 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a;字段数据类型&#xff0c;常见的简单类型有&#xff1a; 字符串&#xff1a;text&#xff08;可…

github Commits must have verified signatures

1.首先确认是否有权限&#xff0c;如有权限的情况下那就是配置有问题了 我的情况是&#xff0c;能拉取代码&#xff0c;提交的时候出现这种情况&#xff1a;Commits must have verified signatures 这里是生成证书&#xff0c;如果已经生成过的&#xff0c;就不用生成了 ssh…

ARM/Linux嵌入式面经(一):海康威视

海康威视 1.函数指针和指针函数区别 1.定义的差异 函数指针&#xff1a;函数指针的定义涉及到函数的地址。例如&#xff0c;定义一个指向函数的指针 int (*fp)(int)&#xff0c;这里 fp 是一个指针&#xff0c;它指向一个接受一个整数参数并返回整数的函数。 指针函数&#…

99 centos 7 服务器上面 增加了 2181 的防火墙配置, 但是客户端连接不上

呵呵 最近部署 zookeeper 的时候出现这样的一个问题 centos 7 服务器上面 增加了 2181 的防火墙配置, 但是客户端连接不上 # 但是再 另外的一个虚拟机环境, ubuntu 16 的环境, docker 启动 2181 的服务, 然后 安装 firewalld, 配置 开放 2181 的 tcp 服务, 客户端能够正常连接…

《C缺陷和陷阱》-笔记(2)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 一、理解函数声明 1.(*(void(*)( ))0)( ); 2.signal 函数接受两个参数&#xff1a; 3.使用typedef 简化函数声明&#xff1a; 二、运算符的优先级…

代码随想录刷题第54天

倒计时day6。第一题是判断子序列https://leetcode.cn/problems/is-subsequence/description/&#xff0c;动规五步曲分析如下&#xff1a;dp[i][j]表示以下标为i - 1的字符串1与下标为j - 1的字符串2的相同子序列长度。当发现str1[i - 1] str2[j - 1]时&#xff0c;相同子序列…

【项目】Boost 搜索引擎

文章目录 1.背景2.宏观原理3.相关技术与开发环境4. 实现原理1.下载2.加载与解析文件2.1获取指定目录下的所有网页文件2.2. 获取网页文件中的关键信息2.3. 对读取文件进行保存 3.索引3.1正排与倒排3.2获取正排和倒排索引3.3建立索引3.3.1正排索引3.3.2倒排索引 4.搜索4.1 初始化…

UNIAPP微信小程序中使用Base64编解码原理分析和算法实现

为何要加上UNIAPP及微信小程序&#xff0c;可能是想让检索的翻围更广把。&#x1f607; Base64的JS原生编解码在uni的JS引擎中并不能直接使用&#xff0c;因此需要手写一个原生的Base64编解码器。正好项目中遇到此问题&#xff0c;需要通过URLLink进行小程序跳转并携带Base64参…

Linux第73步_学习Linux设备树和“OF函数”

掌握设备树是 Linux驱动开发人员必备的技能&#xff01; 1、了解设备树文件 在3.x版本以前的Linux内核源码中&#xff0c;存在大量的“arc/arm/mach-xxx”和“arc/arm/plat-xxx”文件夹&#xff0c;里面很多个“.c”和“.h”文件&#xff0c;它们用来描述设备信息。而现在的A…

Clock uncertainty的通俗解释

在这篇短文里&#xff0c;我会分别用专业和通俗&#xff08;比如举例子&#xff09;的语言解释一下下面出现的专业术语各是什么意思&#xff0c;以及这句话整体的含义&#xff1a;clk uncertainty 组成&#xff1a; PLL jitter &#xff08;cycle to cycle的因素&#xff09;ne…

MySQL实战:SQL优化及问题排查

有更合适的索引不走&#xff0c;怎么办&#xff1f; MySQL在选取索引时&#xff0c;会参考索引的基数&#xff0c;基数是MySQL估算的&#xff0c;反映这个字段有多少种取值&#xff0c;估算的策略为选取几个页算出取值的平均值&#xff0c;再乘以页数&#xff0c;即为基数 查…

FPGA高端项目:FPGA基于GS2971的SDI视频接收+GTX 8b/10b编解码SFP光口传输,提供2套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收转HDMI输出应用本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放Video Mixer多路视频拼接应用本方案的SDI接收OSD动态字符叠加…

【ARM Trace32(劳特巴赫) 高级篇 21 -- SystemTrace ITM 使用介绍】

文章目录 SystemTrace ITMSystemTrace ITM 常用命令Trace Data AnalysisSystemTrace ITM CoreSight ITM (Instrumentation Trace Macrocell) provides the following information: Address, data value and instruction address for selected data cyclesInterrupt event info…

Maven基础简介

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构&#xff0c;spring等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; Maven简介 Maven是什么 Maven…

Qt5.14.2揭秘Qt与SSL/TLS的完美邂逅:打造坚不可摧的网络安全防线

引言&#xff1a; 在数字化时代&#xff0c;数据安全是每个开发者和用户都不可忽视的问题。Qt&#xff0c;作为一个强大的跨平台开发框架&#xff0c;为我们提供了丰富的网络功能&#xff0c;其中就包括了对SSL/TLS加密通信的支持。本文将带你深入了解如何在Qt中实现SSL证书认证…

多态详细说明

多态的概述 什么是多态&#xff1f;同类型的对象&#xff0c;执行同一个行为&#xff0c;会表现出不同的行为特征。 多态的形式 父类类型 对象名称 new 子类构造器; 接口 对象名称 new 实现类构造器; 多态中成员访问特点 方法调用&#xff1a;编译看左边&#…

JVM的工作流程

目录 1.JVM 简介 2.JVM 执行流程 3. JVM 运行时数据区 3.1 堆&#xff08;线程共享&#xff09; 3.3 本地方法栈&#xff08;线程私有&#xff09; 3.4 程序计数器&#xff08;线程私有&#xff09; 3.5 方法区&#xff08;线程共享&#xff09; 4.JVM 类加载 ① 类…

【备战蓝桥杯系列】多源最短路弗洛伊德floyd算法

floyd算法 蓝桥杯中&#xff0c;有时也会要求图中任意点的最短路径&#xff0c;这时候虽然可以用dijkstra&#xff0c;但是代码长&#xff0c;用floyd是最短的。模板如下。 模版 时间复杂度O&#xff08;n^3&#xff09; 使用邻接矩阵存储图 初始化&#xff1a;for (int i …

软件测试的就业前景如何?

近年来&#xff0c;进入软件测试的就业人数逐渐增加。现在的社会对软件测试这个职业都有很大的需求。也有很多刚步入社会的年轻人想学习软件测试。那么你知道学习软件测试的的发展前景怎么样吗?看看下面的详细介绍。 关于软件测试行业发展前景问题&#xff0c;是很多准备入行…

Vue 2和Vue 3透传Attributes特性

Vue 2和Vue 3在透传Attributes方面存在一些区别&#xff0c;这些区别主要体现在对Attributes的处理方式和灵活性上。 在Vue 2中&#xff0c;当父组件向子组件传递Attributes时&#xff0c;这些Attributes会自动绑定到子组件的根元素上。这意味着&#xff0c;如果父组件为子组件…