如何查找整个网页的高度?

时间:2016-12-16 07:26:53

标签: javascript jquery screenshot fullscreen webpage-screenshot

我正在研究捕获网站屏幕截图的解决方案。我正在使用slimerjs.org中提到的默认示例来完成工作。

使用此工具进行屏幕截图非常棒,但我需要对网站进行全高度的屏幕截图。在捕捉http://www.yellowpages.com等网站的屏幕时,我可以获得全长屏幕而无需提及任何高度参数。

但是当我尝试这个网址时:http://votingbecause.usatoday.com/

我只获得设定分辨率的截图(默认值:1920x1080),我无法获得全长图像。

由于我使用的是slimerjs,我可以使用jQuery来操作dom。我需要找到完整的网站高度,以便我可以截取该分辨率

我试过

  • document.height()
  • document.body.scrollheight
  • screen.height
  • $(文件).height()
  • (以及我发现的许多其他内容)

但所有这些只给出了视口的高度(视野中的网站)

问题是,如何找到网站的完整可滚动高度?

7 个答案:

答案 0 :(得分:6)

为了更加通用并找到任何页面的高度,您只需通过简单的递归找到当前页面上最高的DOM节点:

;(function() {
    var pageHeight = 0;

    function findHighestNode(nodesList) {
        for (var i = nodesList.length - 1; i >= 0; i--) {
            if (nodesList[i].scrollHeight && nodesList[i].clientHeight) {
                var elHeight = Math.max(nodesList[i].scrollHeight, nodesList[i].clientHeight);
                pageHeight = Math.max(elHeight, pageHeight);
            }
            if (nodesList[i].childNodes.length) findHighestNode(nodesList[i].childNodes);
        }
    }

    findHighestNode(document.documentElement.childNodes);

    // The entire page height is found
    console.log('Page height is', pageHeight);
})();

您可以在示例站点(http://votingbecause.usatoday.com/)上测试它,并将此脚本粘贴到DevTools控制台。

享受!

P.S。支持iframe内容。

答案 1 :(得分:3)

网站中的内容位于以下div

<div class="site-wrapper flex column">

使用此代码获取高度

document.querySelector(".site-wrapper").scrollHeight

答案 2 :(得分:1)

2020 的更新答案:

您只需在下面的行中传递此内容即可获取网页的高度

代码:

console.log("Page height:",document.body.scrollHeight);

答案 3 :(得分:1)

尝试 windows.innerHeight 获取浏览器视口大小 我想这就是你想要的

答案 4 :(得分:0)

$("body").height();

是你需要的

答案 5 :(得分:0)

$(window).height();  

检索当前窗口高度..

答案 6 :(得分:0)

这是我发现有效的方法。 document.body.scrollHeight 给了我 0 的值。 有效的是

document.documentElement.scrollHeight

https://minimul.com/getting-a-zero-with-document-body-scrollheight.html