HTML - 页面的完整高度,包括滚动之外的内容

时间:2010-09-17 10:21:11

标签: javascript html css firefox firefox-addon

我需要找出页面的高度,包括超出隐藏的垂直卷轴的内容。我搜索了谷歌和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但在其他网站上运行得很好。 任何线索如何让我的工作。

由于

1 个答案:

答案 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();