如果这可以给你一些帮助:
alert($('body')[0].scrollHeight);
这个命令也给了我相同的值:
alert($('body').context.height);
我尝试使用此脚本,但应该改进它,因为它使用不同的浏览器给出不同的结果。
var k=0;
var off = document.documentElement.offsetHeight;
$('#but').click(function(){
//let's go faster here (first 3 before the user touch something
$('html body').scrollTop(9999999); //best scroll
var k=$('html body').scrollTop();//getrealscroll
$('html body').scrollTop(0);//backscrollto0
alert(off+k);//the height
});
我想建议你一个脚本,考虑是否有绝对元素,找到高度:
<button id="but">Scan me</button>
var maxhabs = 0;
var maxhrel = 0;
var realh = 0;
var top=0;
var topbottom=0;
var off = document.body.offsetHeight; //get the offsetheight
$('#but').click(function(){
$.each($('body *:not(script)'),function(index,value){//get all body elements
if ($(this).css('position') == 'absolute'){//check for position absolute(the only that the browser ignore
alert($(this).css('top')+' '+$(this).css('bottom'));//check for top and bottom properties (and for every css properties that can move the object down)
if(!isNaN($(this).css('top').replace('px',''))){//get max top or max negative bottom
if(topbottom < $(this).css('top').replace('px','')){
topbottom=$(this).css('top').replace('px','');
}
}
if(!isNaN($(this).css('bottom').replace('px',''))){
if(topbottom < (-$(this).css('bottom').replace('px',''))){
topbottom=(-$(this).css('bottom').replace('px',''));
}
}
}
});
//confront the height, get the higher
maxhabs = topbottom;
maxhrel = off;
alert('offsetheight:'+off);
alert('maxhabs:'+maxhabs);
if(maxhrel>maxhabs){alert('higher:'+maxhrel)}else{alert('higher:'+maxhabs);}
});
由于时间的原因,我无法对其进行改进,但我认为这也可以帮助您检查jsfiddle
编辑:
这是我制作的最后一个代码,似乎有效,我在不同的浏览器(chrome,ie,ff,opera,safari)中测试了它,但只有 2 个 div(1 个绝对 e 1 不是),通过改变高度和玩边距顶部/底部和顶部/底部。请检查并告诉我:
var maxhabs = 0;
var maxhrel = document.body.offsetHeight; //get the offsetheight
var atotoffset=0;
var id="";
$('#but').click(function(){
$.each($('body *:not(script)'),function(){//get all body elements
if ($(this).css('position') == 'absolute'){//is absolute?
if(typeof($(this).offset().top)!='undefined'){//defined?
if(atotoffset < $(this).offset().top+$(this).context.offsetHeight){
atotoffset=$(this).offset().top+$(this).context.offsetHeight;
idabs = $(this).context['id'];
}//works for -/+ margin top/bottom & top/bottom crosssbrowser
}
}
});
maxhabs = atotoffset;//absolute element offset position from the top
if(maxhrel>maxhabs){
alert('higher:'+maxhrel);
}else{
alert('higher:'+maxhabs+' for the element:'+idabs);
}
});
JSFIDDLE