javascript - 如何找到整个网页的高度?

标签 javascript jquery screenshot fullscreen webpage-screenshot

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

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

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

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

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

我试过了

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

但是这些都只给出了viewport的高度(website in view)

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

最佳答案

更一般地说,要找到任何页面的高度,您可以通过简单的递归找到当前页面上最高的 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);
})();

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

尽情享受吧!

附言支持 iframe 内容。

关于javascript - 如何找到整个网页的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41179264/

相关文章:

javascript - 单选按钮需要点击两次才能反射(reflect)变化

javascript - 是否可以暂停 Chrome/Opera 中的 svg 错误

jquery - Div inside div,背景大小调整不起作用(使用视差效果)?

java - 如何以编程方式截取整个 Activity 页面的屏幕截图?

android - 从设备 : EOF Android Studio 3. 2.1 获取屏幕截图时出现意外错误

未调用 JavaScript 构造函数

javascript - 使用 Google map 地理定位标记多个位置

jquery 按两次键

javascript - Jquery 悬停 - 保持弹出窗口打开

performance - 使用 ffmpeg 获取视频屏幕截图的更快方法