当前位置: 首页 > news >正文

前端实现页面内容的截图与下载(html2canvas)

今天是一个发文的好日子😀~

👇👇👇

一个需求,要截取页面中的内容并截图保存,来看一看我是怎么实现的吧:

这里需要使用到插件--html2canvas

1.安装并引入html2canvas

npm install html2canvas
import html2canvasfrom 'html2canvas'

也可以从这里找到相应的文件html2canvas.hertzen.com/dist/html2canvas.js

以便原生js引入

<script type="text/javascript" src=".\html2canvas.js"></script>

2.创建(下载按钮)点击事件:

(1)html2canvas方法来获取canvas对象,其第一个参为对应的节点,第二个是相关配置项。

(2)获取到canvas后用其toDataURL方法转换为url,并提供a链接的href(放链接)与download(文件名)并添加到页面上来进行下载(注意图片格式统一)。

(3)想要自动下载,可先将a链接藏起来,并异步使用dispatchEvent触发其点击事件,最后移除该a链接即可。

以上三步代码示例如下👇

let aimPart = document.querySelector('.app');html2canvas(aimPart,{scale: 2,width: aimPart.offsetWidth,height: aimPart.offsetHeight,allowTaint: true,    // 允许污染画布proxy: '/imgProxy'}).then((canvas) => {let imgUrl = canvas.toDataURL('image/png', 1);let downLoadLink = document.createElement('a');downLoadLink.innerText = '下载'downLoadLink.download = '铸剑山庄.png';downLoadLink.href = imgUrl;downLoadLink.className = "downLoadLink"downLoadLink.style.display = "none";// 下载图片aimPart.appendChild(downLoadLink)window.setTimeout(() => {document.querySelector('.downLoadLink').dispatchEvent(new MouseEvent('click'));aimPart.removeChild(document.querySelector('.downLoadLink'))},500)})

之后便可以下载目标节点(示例中aimPart)的相应截图了~

希望本文会对您有所帮助~ ^_^

http://www.lryc.cn/news/233258.html

相关文章:

  • VS2017 IDE 编译时的 X86、x64位 是干什么的
  • 微信小程序 解决tab页切换过快 数据出错问题
  • Taro编译警告解决方案:Error: chunk common [mini-css-extract-plugin]
  • 基于JavaWeb+SpringBoot+Vue电子商城微信小程序系统的设计和实现
  • JS进阶——作用域、解构、箭头函数
  • centos下安装mysql8版本
  • C++面试常考手写题目
  • LLM建模了什么,为什么需要RAG
  • 为开发GPT-5,OpenAI向微软寻求新融资
  • 创邻科技亮相ISWC 2023,国际舞台见证知识图谱领域研究突破
  • 开源博客项目Blog .NET Core源码学习(6:雪花算法)
  • 【Python】集合与字典
  • 【LeetCode】88. 合并两个有序数组
  • Linux文件权限
  • 〖大前端 - 基础入门三大核心之JS篇㉟〗- JavaScript 的DOM简介
  • CentOS中安装常用环境
  • python时间变化与字符串替换技术及读JSON文件等实践笔记
  • leetcode刷题日记:141. Linked List Cycle(环形链表)
  • html书本翻页效果,浪漫表白日记本(附源码)
  • 【Mysql】学习笔记
  • 工作记录-------java文件的JVM之旅(学习篇)---好理解
  • 城市内涝对策,万宾科技内涝积水监测仪使用效果
  • android的通知使用
  • 001 opencv addWeighted
  • 2311rust,到35版本更新
  • UniPro提高集成能力 让客户专注于交付价值
  • Python---函数的作用,定义,使用步骤(调用步骤)
  • ERP智能管理系统:智能化的未来之路
  • c++ memccpy和 = 都可以用于赋值操作
  • Golang for 循环中的隐式内存别名问题