解决前端html2canvas生成图片慢问题

分享一个小发现

这里首先直接说结论:

        由于html2canvas生成图片的过程会从html的head、body层标签开始遍历,所以对于项目较大,但是只需要对某个dom(下文以D称呼)生成图片的情况非常不友好!

        所以,一定要通过ignoreElements过滤掉大部分没用的标签。

        至于怎么过滤,我用了dom方法comparedocumentposition(如果有更好的办法可以在评论区分享一下),先用上述方法判断当前遍历的element与D是否有父子关系,有关系则不忽略,没关系的话还要判断是否head标签和样式的link标签和style标签(如style标签较多的话可以考虑对style也按需忽略),其余标签可以忽略。如果D里有滚动的话,还要通过对element的offsetTop判断在可视范围外则忽略。

        由于html2canvas需要通过拿到的style来计算图片里的显示样式,所以需要保留部分需要的style标签,并留一下生成的图片样式会不会有问题。

        这样下来效率会得到质的提升!对于我的现状来说,一个又长又臭的破elUI表格从20秒提升到1秒,很nice!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值