我正在研究捕获网站屏幕截图的解决方案。我正在使用slimerjs.org中提到的默认示例来完成工作。
使用此工具进行屏幕截图非常棒,但我需要对网站进行全高度的屏幕截图。在捕捉http://www.yellowpages.com等网站的屏幕时,我可以获得全长屏幕而无需提及任何高度参数。
但是当我尝试这个网址时:http://votingbecause.usatoday.com/
我只获得设定分辨率的截图(默认值:1920x1080),我无法获得全长图像。
由于我使用的是slimerjs,我可以使用jQuery来操作dom。我需要找到完整的网站高度,以便我可以截取该分辨率
我试过
但所有这些只给出了视口的高度(视野中的网站)
问题是,如何找到网站的完整可滚动高度?
答案 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