html2canvas以及domtoimage的使用踩坑总结

背景

有个需求需要通过代码下载整个dom结构,所以我一开始使用html2canvas,但是发现在安卓中是可以的,在iOS8以上版本会出现截图整个页面空白的情况,于是为搜了很多资料,最后发现一个博主的总结踩坑跟我基本差不多,博主链接:https://segmentfault.com/a/1190000015992221,下来开始进入正题

一、html2canvas对于跨域图片,转换的时候会将跨域图片识别为空白。
问题分析:

既然是由于跨域引起的问题,那我们让资源不跨域不就可以访问了吗?

解决办法:

将图片放置服务器,通过nginx进行代理资源,前端访问图片便不涉及到跨域问题。

二.html2canvas动态加载内容,通过canvas转换出来的数据,图片为空
问题分析:

内容是动态加载进来的,转换肯定是在请求完毕之后再去转换,但是在请求完毕之后去转换,按理说所需要的所有数据都已经到达前端,应该可以转换,经过思考,发现图片内容从后台读取需要一定时间去解析,才能够完整的将图片资源展示出来,html2canvas是将页面上显示的dom元素,经过解析将dom画在canvas上在转换为image图片格式。

解决方法:

使用定时器等待一段时间在进行截图操作

三.html2canvas转换的base64位图不能被ios8以上版本所识别。会呈现出整个截图页面空白(大坑)
问题分析:

百度说是由于ios不能识别base64的前缀,于是我试过将图片的前缀去除,但发现没反应。还是无用。思来想去感觉html2canvas坑太多了

解决方法

使用dom-to-image

四、dom-to-image运用上去,在ios上能够出现内容了,但发现存在一个问题,背景图片不见了
问题分析

可能是我转成png的原因

解决方法

使用domtoimage.toSvg

五、安卓手机svg之不能将图片分享给朋友

这个简单,区分机型,安卓就直接使用html2canvas就OK啦

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值