html2canvas截图捕捉当前窗口,而不是整个身体

时间:2015-04-25 17:58:12

标签: javascript screenshot html2canvas

尝试在javascript中捕获整个页面的屏幕截图(包括用户填写的字段),但html2canvas仅捕获当前窗口,即使我将高度设置为一个巨大的数字。 html2canvas网站示例似乎具有我想要的功能,但我无法理解他们在做什么不同。

<button id="pdfbutton" type="button">Click Me!</button>

<script type="text/javascript">
$( "#pdfbutton" ).click(function() {
    html2canvas(document.body, {
        onrendered: function(canvas) {
            // document.body.appendChild(canvas);
            var img = canvas.toDataURL("image/png");
            console.log(img);
            document.body.appendChild(canvas);

        }
        // height: 10000
    });
});
</script>

请告诉我是否有其他方法可以在javascript按钮上点击屏幕截图(不插入网址,因为用户会在我的网页上填写字段)。

2 个答案:

答案 0 :(得分:3)

通过删除html2canvas不支持的样式属性(高度,位置)并在捕获屏幕截图后添加它来解决此问题。在我的情况下,我遇到了问题。

  $('.element').css('position','initial'); // Change absolute to initial
  $my_view = $('#my-view');
  var useHeight = $('#my-view').prop('scrollHeight');
  html2canvas($my_view[0], {
    height: useHeight,
    useCORS: true,
    allowTaint: true,
    proxy: "your proxy url",
    onrendered: function (canvas) {
        var imgSrc = canvas.toDataURL();
        var popup = window.open(imgSrc);
        $('.element').css('position','absolute');
    }
  });

这将截取包括可滚动部分在内的整个屏幕截图。 check this solution

答案 1 :(得分:0)

Html2Canvas有一个问题,迫使它从顶部窗口的边界渲染一个元素。您可以考虑滚动到元素的顶部。

第二个问题是溢出处理。在父元素上设置overflow: visible并在导出后将其删除。