如何在 Phantomjs (javascript) 中获取完整 html 页面的高度?
How to get the height of a full html page in Phantomjs (javascript)?
您好,这些都试过了:
document.body.scrollHeight
document.body.offsetHeight
document.documentElement.clientHeight
document.documentElement.scrollHeight
document.documentElement.offsetHeight
这些在普通浏览器中工作,但在 Phantomjs 中,我得到了 CMD(命令行 window)高度。我想得到高度,以便稍后在代码中裁剪屏幕截图。并且页面的高度必须与在普通浏览器上查看的一样
我得到 300 像素,我想获得完整的 html 页面高度(取决于 URL)..
这些值提供与其他浏览器一样的预期值。完整示例:
var page = require('webpage').create();
var url = 'http://www.whosebug.com/';
page.open(url, function(){
console.log(page.evaluate(function(){
return JSON.stringify({
"document.body.scrollHeight": document.body.scrollHeight,
"document.body.offsetHeight": document.body.offsetHeight,
"document.documentElement.clientHeight": document.documentElement.clientHeight,
"document.documentElement.scrollHeight": document.documentElement.scrollHeight
}, undefined, 4);
}));
phantom.exit();
});
输出:
{
"document.body.scrollHeight": 8777,
"document.body.offsetHeight": 8777,
"document.documentElement.clientHeight": 300,
"document.documentElement.scrollHeight": 8777
}
您的情况可能并非如此的原因:
- DOM 只能通过
page.evaluate()
访问。在 page.evaluate()
之外存在一个 document
对象,但它只是一个虚拟对象。
- PhantomJS 的默认视口为 400x300 像素。如果网页是响应式的,那么它只会使用这个尺寸。
- 连同上述几点,
<body>
可能无法滚动,但只有一些具有所有(可滚动)内容的子元素。在这种情况下,每个值都等于视口高度。
您好,这些都试过了:
document.body.scrollHeight
document.body.offsetHeight
document.documentElement.clientHeight
document.documentElement.scrollHeight
document.documentElement.offsetHeight
这些在普通浏览器中工作,但在 Phantomjs 中,我得到了 CMD(命令行 window)高度。我想得到高度,以便稍后在代码中裁剪屏幕截图。并且页面的高度必须与在普通浏览器上查看的一样
我得到 300 像素,我想获得完整的 html 页面高度(取决于 URL)..
这些值提供与其他浏览器一样的预期值。完整示例:
var page = require('webpage').create();
var url = 'http://www.whosebug.com/';
page.open(url, function(){
console.log(page.evaluate(function(){
return JSON.stringify({
"document.body.scrollHeight": document.body.scrollHeight,
"document.body.offsetHeight": document.body.offsetHeight,
"document.documentElement.clientHeight": document.documentElement.clientHeight,
"document.documentElement.scrollHeight": document.documentElement.scrollHeight
}, undefined, 4);
}));
phantom.exit();
});
输出:
{ "document.body.scrollHeight": 8777, "document.body.offsetHeight": 8777, "document.documentElement.clientHeight": 300, "document.documentElement.scrollHeight": 8777 }
您的情况可能并非如此的原因:
- DOM 只能通过
page.evaluate()
访问。在page.evaluate()
之外存在一个document
对象,但它只是一个虚拟对象。 - PhantomJS 的默认视口为 400x300 像素。如果网页是响应式的,那么它只会使用这个尺寸。
- 连同上述几点,
<body>
可能无法滚动,但只有一些具有所有(可滚动)内容的子元素。在这种情况下,每个值都等于视口高度。