0

Web ページに垂直スクロールバーがあり、ページの下部にいくつかのボックスがある場合に位置を修正する理由で、ページの下部にパディング ピクセルを追加するかどうかをテストしたいと考えています。問題は、同じ値を返したウィンドウの高さでドキュメントの高さをテストすると、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 に答える