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

vue中完美解决html2canvas图片跨域问题

html2canvas在截图的过程中,如果遇到html中有跨域地址的图片,比如图片存在了别人的云上,截图的时候将不会显示图片,解决方案如下: Js部分

import html2canvas from 'html2canvas'

data () {
	return {
		imageUrl: 'http://xxx.example.com', // 跨域地址
		screenshotImage: ''	 // 保存的base64地址
	}
},
methods: {
	async shareHandle () {
		const opts = {
			useCORS: true
		}
		const ele = this.$refs.screenshot
		const canvas = await html2canvas(this.$refs.screenshot, opts)
      this.screenshotImage = canvas.toDataURL('image/jpg')
	}
}
复制代码

html代码

<div class="share-wrap" ref="screenshot">
  <img :src="imageUrl+'?'+new Date().getTime()" crossOrigin="anonymous">
</div>
复制代码

这里有几个关键的地方:

  1. allowTaint: trueuseCORS: true 都是解决跨域问题的方式,不同的是使用allowTaint 会对canvas造成污染,导致无法使用canvas.toDataURL 方法,所以这里不能使用allowTaint: true
  2. 在跨域的图片里设置 crossOrigin="anonymous" 并且需要给imageUrl加上随机数
  3. canvas.toDataURL('image/jpg') 是将canvas转成base64图片格式。

相关文章:

  • Eclipse+kafka集群 实例源码
  • 高并发处理思路与手段(六):服务降级与服务熔断
  • 2014第6周日杂记
  • 26. Remove Duplicates from Sorted Array C++ 删除排序数组中的重复项
  • Usage of API documented as @since 1.8+”报错的解决办法
  • Mysql容器启动失败-解决方案
  • Linux的epoll模型
  • java B2B2C电子商务平台分析之七-Spring Cloud Config
  • 安排
  • Effective_STL 学习笔记(三十六) 了解 copy_if 的正确 实现
  • 强健x86平台
  • Dubbo各种协议详解
  • Java,console输出实时的转向GUI textbox
  • SpringBoot 日志框架
  • Expression.Bind()方法的应用
  • 0基础学习移动端适配
  • C语言笔记(第一章:C语言编程)
  • JavaScript服务器推送技术之 WebSocket
  • Java新版本的开发已正式进入轨道,版本号18.3
  • JS 面试题总结
  • JS实现简单的MVC模式开发小游戏
  • mongo索引构建
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Tornado学习笔记(1)
  • vue:响应原理
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 搭建gitbook 和 访问权限认证
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 基于组件的设计工作流与界面抽象
  • 京东美团研发面经
  • 使用Swoole加速Laravel(正式环境中)
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一文看透浏览器架构
  • 应用生命周期终极 DevOps 工具包
  • 在Docker Swarm上部署Apache Storm:第1部分
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​ssh免密码登录设置及问题总结
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • $forceUpdate()函数
  • (06)金属布线——为半导体注入生命的连接
  • (LeetCode) T14. Longest Common Prefix
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)利用webkit抓取动态网页和链接
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET CLR Hosting 简介
  • .net 后台导出excel ,word
  • .NET大文件上传知识整理
  • .NET单元测试