0

我想测试一个网页是否有一个垂直滚动条来在页面底部添加一些填充像素,以便在底部有某个框时固定位置。问题是,当我测试文档的高度与返回的窗口高度相等时,body 标记的高度也返回 0(body 的高度是动态的,未设置)。下面的函数也不能正常工作:

function hasScroll(el, direction) {
direction = (direction === 'vertical') ? 'scrollTop' : 'scrollLeft';
var result = !! el[direction];
if (!result) {
el[direction] = 1;
result = !!el[direction];
el[direction] = 0;
}
return result;
}

(function($){
$.fn.hasScrollBar = function(){ return this.get(0).scrollHeight > this.innerHeight();}
})(jQuery);

CSS主体设置为:

body{
font-family:'DINRegular';
margin:0 auto;
padding:0;
font-size:13px;
color:#000;
} 

尽管页面中存在滚动条,但它始终返回 false。

谢谢你的建议。

4

1 回答 1

0

您需要在文档首次加载时检查垂直滚动条,然后在调整窗口大小时检查。所以这是一个粗略的例子。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function() {  
var hasScrollbar = $('body').outerHeight()+16 > $(window).height();
if(hasScrollbar){ 
$('#message').show();
} else {
$('#message').hide();
};
}); 
$(window).resize(function() {
var hasScrollbar = $('body').outerHeight()+16 > $(window).height();
if(hasScrollbar){ 
$('#message').show();
} else {
$('#message').hide();
};
});
</script>
<div style="width:600px;height:600px;border:1px solid blue;">
test -
<div id="message" style="display:none;">has vertical scrollbar</div>
</div>
于 2012-07-11T09:21:43.040 回答