如何求整个网页的高度?

2024-04-06

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

这个工具的屏幕截图非常棒,但我需要拍摄网站的全高屏幕截图。当捕获类似网站的屏幕时http://www.yellowpages.com http://www.yellowpages.com,我可以获得全长屏幕,而不必提及任何高度参数。

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

我只能获取设置分辨率的屏幕截图(默认:1920x1080),无法获取全长图像。

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

I tried

  • 文档.height()
  • 文档.body.scrollheight
  • 屏幕高度
  • $(文档).height()
  • (以及我发现的许多其他内容)

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

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


更一般地说,找到高度any page你可以通过简单的递归找到当前页面上最高的 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/ http://votingbecause.usatoday.com/)将此脚本粘贴到 DevTools 控制台。

Enjoy!

附:支持iframe内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何求整个网页的高度? 的相关文章

随机推荐