html2canvas苹果safari浏览器截图不全

201 阅读1分钟

可添加配置 在调用方法之前使用;** window.scrollTo(0, 0); return new Promise((resolve, reject) => { html2canvasToFile(dom, id + '.jpeg', 'image/jpeg', (doc) => { // 滚动到顶部 doc.documentElement.scrollTop = 0; doc.body.scrollTop = 0; doc.body.style.height = window.innerHeight + 'px'; // 在克隆的文档中找到需要忽略的元素并进行处理 const addPaymentRecordDom = doc.getElementById('addPaymentRecord'); const addPaymentRecordH = addPaymentRecordDom?.offsetHeight || 0; const appLayoutForAgent =doc.getElementById('appLayoutForAgent'); const appLayoutForAgentH = appLayoutForAgent?.offsetHeight || 0; // 注释高度 if ( addPaymentRecordH > 0 && addPaymentRecordH > doc.body.offsetHeight ) { doc.body.style.height = ${appLayoutForAgentH-addPaymentRecordH>0? appLayoutForAgentH:addPaymentRecordH}px; }

    // 弹窗截图
    const box = doc.getElementsByClassName(
      'add-dialog',
    )?.[0] as HTMLDivElement;
    if (box) {
      const boxStyle = box.style;
      box.scrollTop = 0;
      boxStyle.height = 'auto';
      boxStyle.maxHeight = 'unset';
      const { top, height } = box.getBoundingClientRect();
      const bodyH=doc.body.style.height
      if( bodyH && height+64-Number(bodyH.replace('px',''))>0){
        doc.body.style.height=height+64+'px'
      }
      if (top < 0) {
        boxStyle.position = 'absolute';
        boxStyle.top = '0';
        boxStyle.left = '32px';
        boxStyle.right = '32px';
        boxStyle.marginLeft = '0';
        boxStyle.marginRight = '0';
      }
    }
  })
    .then((file) => {
      style.remove();
      const formData = new FormData();
      formData.append('file', file);
      formData.append('imageType', '2');
      formData.append('eformId', id);
      uploadFile({
        type: 'paymentForm',
        file: formData,
      });
      resolve(file);
    })
    .catch((error) => {
      console.error(
        'Error creating screenshot or converting to File:',
        error,
      );
      reject();
    });
});

html2canvas(element, { width, // height: 1500, scale: 2, useCORS: true, allowTaint: true, backgroundColor: null, onclone: onclone, scrollY:0 }) 主要是添加scrollY为0;