{c...">
最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • html2canvas使用及踩坑记录

    正文概述 掘金(魔力清清)   2020-12-19   818

    本文知乎地址-知不道者

    html2canvas 的参数

    如何使用

    html2canvas(document.querySelector("#capture")).then(canvas => {
        console.log(canvas);
    });
    

    大家是否在使用的过程中遇到了白图、跨域、ios不触发then、iframe多次触发等问题,是不是很烦

    html2canvas使用及踩坑记录

    白图问题

    原因:由于页面的滚动,元素fixed

    解决:设置参数y值为目标元素顶部距窗口的距离+滚动距离

    html2canvaas(ele,{
      y: ele.getBoundingClientRect().top + window.scrollY
    })
    

    如果是里面有资源图缺失,那么就是资源未加载完,需要监测资源图加载完毕之后执行

    跨域

    html2canvaas(ele,{
      useCORS: true,
      y: ele.getBoundingClientRect().top + window.scrollY
    })
    

    但是,如果你遇到有的图片还是跨域的话,那么需要使用canvas去把跨域的图片转成base64

    const getBase64Image = (src: string) =>
      new Promise((resolve, reject) => {
        const img = document.createElement('img');
        img.crossOrigin = '';
        img.src = src;
        img.onload = () => {
          const canvas = document.createElement('canvas');
          const ratio = window.devicePixelRatio || 2;
          const width = img.width * ratio;
          const height = img.height * ratio;
          canvas.width = width;
          canvas.height = height;
          const ctx: any = canvas.getContext('2d');
          ctx.drawImage(img, 0, 0, width, height);
          try {
            resolve(canvas.toDataURL('image/jpeg', 0.9)); // 这里是为了降低图片大小
          } catch (error) {
            reject(error);
          }
        };
      });
    

    ios不触发then

    使用1.0.0-rc.4版本,就酱紫

    html2canvas使用及踩坑记录

    iframe多次触发

    这是由于它遍历了所有的标签对其进行操作了,这其中包括了iframe,不知道会不会有其他src资源也这样,具体什么操作得看看源码,但是怎么解决呢,这个插件还是挺贴心的

    html2canvas使用及踩坑记录

    html2canvaas(ele,{
      useCORS: true,
      y: ele.getBoundingClientRect().top + window.scrollY,
      ignoreElements: (element: any) => {
         if (element.tagName.toLowerCase() === 'iframe') {
                  return element;
            }
           return false;
       },
    })
    

    以上是使用html2canvas时遇到的坑,欢迎大家留言自己遇到的问题,一起讨论一下


    本文知乎地址-知不道者


    起源地下载网 » html2canvas使用及踩坑记录

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元