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

前端使用html2canvas在页面截图并导出,以及截图中含有图片时的跨域问题解决

1.引入html2canvas

npm 安装或cdn引入

npm install html2canvas <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>

2.使用 html2canvas

// 假设你有一个 id 为 "capture" 的元素  
html2canvas(document.querySelector("#capture")).then(canvas => {  // canvas 是转换后的 canvas 元素  // 你可以将 canvas 转换为图片,然后添加到 DOM 中  document.body.appendChild(canvas);  // 或者,将 canvas 转换为图片 URL 并显示在 img 元素中  var image = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");  var link = document.createElement('a');  link.download = 'screenshot.png';  link.href = image;  link.click();  
});

3.图片跨域时的解决方法

1.服务器CORS配置:

        图片所在服务器设置Access-Control-Allow-Origin: * 或 Access-Control-Allow-Origin: 你的域名 的头部。

        注意,出于安全考虑,许多服务器默认不允许跨域请求。

2.设置开发服务器代理,以vue项目为例:

        在vue.config.js中配置

// vue.config.js  
module.exports = {  devServer: {  proxy: {  '/file': {  target: 'http://155.60.114.72:88545'//图片所在地址,  changeOrigin: true,  pathRewrite: {  '^/file': ''  }  }  }  }  
}

        在你的Vue组件中,你应该将图片URL更改为通过代理访问的URL

let img = '/file/7df46603b38d49af94cefb4c92d5cd27.jpg'

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【前端 19】使用Vue-CLI脚手架构建Vue2项目
  • 学python的第二天:第一个代码
  • 使用WebSocket实现log日志流的实时展示-从轮询到通知
  • Spring面试资料大全
  • 基于cubeMX的STM32开启SPI及DMA
  • 【外排序】--- 文件归并排序的实现
  • 实验5-10 使用函数统计指定数字的个数
  • VGA接口驱动设计验证
  • 现代前端架构介绍(第二部分):如何将功能架构分为三层
  • C#中的Winform基础
  • java学习--泛型
  • yum仓库的制作与使用
  • 谷歌开源最强端侧小模型:2B参数越级跑赢GPT-3.5-Turbo,苹果15Pro运行飞快
  • 云计算 docker 管理镜像和容器
  • python pip怎么安装包
  • 自己简单写的 事件订阅机制
  • 【mysql】环境安装、服务启动、密码设置
  • 230. Kth Smallest Element in a BST
  • Android单元测试 - 几个重要问题
  • Android开源项目规范总结
  • Date型的使用
  • Effective Java 笔记(一)
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • golang 发送GET和POST示例
  • Javascript弹出层-初探
  • k8s如何管理Pod
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • mongo索引构建
  • October CMS - 快速入门 9 Images And Galleries
  • pdf文件如何在线转换为jpg图片
  • swift基础之_对象 实例方法 对象方法。
  • Zepto.js源码学习之二
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 飞驰在Mesos的涡轮引擎上
  • 前言-如何学习区块链
  • 算法---两个栈实现一个队列
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 积累各种好的链接
  • ​iOS安全加固方法及实现
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 达梦数据库知识点
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #{} 和 ${}区别
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #前后端分离# 头条发布系统
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (搬运以学习)flask 上下文的实现
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...