我需要找出页面的高度,包括超出隐藏的垂直卷轴的内容。我搜索了谷歌和stackoverflow质量保证,但这些解决方案不适用于我的情况。
一个条件是我无法更改HTML或BODY css。 基本上我正在尝试使用firefox扩展
所有方法,如
offsetHeight, scrollHeight, getComputedValue
在某个网站noupe.com上无法正常工作。每当我试图找到身体的上述属性时它就会给我18px,即使页面高度超过4000像素。
尝试了jQuery的
$(document).height();
也没用。
这就是我找到页面高度的方式:
var x = window.content;
var pageBody = x.document.getElementsByTagName("body")[0];
var my_pageheight = parseInt(x.document.defaultView.getComputedStyle(pageBody, "").getPropertyValue("height"));
这在noupe.com上给了我18px但在其他网站上运行得很好。 任何线索如何让我的工作。
由于
答案 0 :(得分:3)
怎么样
$('body').height();
我打算发布一个解释,但Alex在下面的评论中为我做了,所以相反我想我会发布一些链接到你可以找到更多相关信息的地方:
http://dev.opera.com/articles/view/35-floats-and-clearing/
http://www.smashingmagazine.com/2007/05/01/css-float-theory-things-you-should-know/
还要记住,由于我们正在处理body
元素,因此我们无法使用overflow: hidden
方法(这将从页面中删除滚动条)。
另外,谢天谢地,可以注入新元素,我正在考虑将其用作解决方案......
var max = 0;
$('body *').each(function(){
var current = $(this);
if ((current.offset().top + current.height()) > max) max = current.offset().top + current.height();
});
可能被认为是我写过的最糟糕的Javascript之一,因为你声明你不能再添加CSS或HTML了。以下(假设您仍然需要它)应该有效:
$('<div />').css({
'height': 0,
'width': 0,
'visibility': 'hidden',
'clear': 'both'
}).appendTo('body');
$('body').height();