这些值与其他浏览器一样提供期望值。完整的示例:
var page = require('webpage').create();
var url = 'http://www.stackoverflow.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>
可能不可滚动,但只有一些具有所有(可滚动)内容的子元素。在这种情况下,每个值都等于视口高度。
如果没有真正的浏览器,你期望得到什么?为什么CMD线窗口高度不能用于测试目的?考虑一下你的帖子的[编辑]来澄清。 – jmort253
为什么CMD窗口的高度不能替代,因为Phantom没有实际的物理浏览器? – jmort253
CMD高度是什么意思?你有什么样的价值观,你期望什么样的价值观?请显示完整的示例脚本。 –