Jquery浏览器滚动问题

时间:2012-07-11 07:13:48

标签: javascript jquery height scrollbar

我想测试一个网页是否有一个垂直滚动条,在页面底部添加一些填充像素,以便在底部有一个框的情况下修复位置。问题是当我用返回相等值的窗口高度测试文档的高度时,身体标记的高度也返回0(身体的高度是动态的未设置)。此外,下面的函数不能正常工作:< / p>

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。

感谢您的建议。

1 个答案:

答案 0 :(得分: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>