2010-12-20 15 views
1
を使用して、ページの一番下にしているかどうかを判断する方法

ありjQueryのでscrollBottom()と呼ばれるものは何もありませんので、私は$(window).scrollBottom()==0我々はJavascriptを/ jQueryの

の質問はタイトル自体から明らかであるホープはできません。どんな助けでも大歓迎です。私は主にIE7 +、FF3.5 +(Chromeなどはボーナスです)に興味があります

ありがとう!

+0

このリンクを読むhttp://ettoz.wordpress.com/2009/04/16/jquery-fixed-bar/ –

+0

問題は解決しませんが、問題に役立ちます –

+0

これはどのようにして自分の問題を解決しますか?ボトムに固定バーを追加するという意味ですか? – ragebiswas

答えて

2

あなたは要素が(ページの一番下に、例えば要素)表示されているかどうかを確認するために、この機能を使用することができます。

function isScrolledIntoView(elem) 
{ 
    var docViewTop = $(window).scrollTop(); 
    var docViewBottom = docViewTop + $(window).height(); 

    var elemTop = $(elem).offset().top; 
    var elemBottom = elemTop + $(elem).height(); 

    return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom)); 
} 

私はそれで(Facebookの中のような)無限スクロール効果を実装しました。

あなたがするたびに確認することができ、ユーザーがウィンドウをスクロールしている:

function checkAndLoad(){ 
    if(isScrolledIntoView($('#footer'))){ 
     triggerSomething(); // 
    } 
} 
$(document).ready(function(){ 
    checkAndLoad(); 
    $(window).scroll(function(){ 
     checkAndLoad(); 
    }); 
}); 
+0

Stoefln、私は基本的に私がページの一番下にいるかどうかを見たいと思っています。私の質問は、http://stackoverflow.com/questions/3057892/checking-is-near-at-the-bottom-of-the-pageとまったく同じです。ただし、与えられた解決策はIE8では機能しません。 – ragebiswas

2

<皮肉>はJavaScriptを使用してください。 </ironic >

このブラウザのサポートは混在しています。非IEではwindow.pageYOffset、IEではdocument.body.scrollTopまたはdocument.documentElement.scrollTopのいずれかを使用する必要があります。ブラウザのバージョンと互換性モードによって異なります。

結果にいくつかのレベルの数学的操作を行わなければならないかもしれません - 私は仕事でテストするために複数のブラウザにアクセスすることはできません(私は知っています)。

+0

IEの 'document.body'と 'document.documentElement'の違いについて教えてください! – ragebiswas

2

チェックこれは

http://jsfiddle.net/sandeepan_nits/3Ys35/2/

を働く場合、私はe.pageY$(document).height()を比較したが、フィドルの例では、すべてのブラウザのために正確に動作しないとオフセットの問題があります。 1のオフセットを設定すると、ffで正常に動作します。

他に何も完璧に動作しない場合は、ブラウザに基づいて異なるオフセットを設定すること(IEは別々必要があるでしょうし、他の人はおそらく分離)、または他のそれはあなたのあたりとしてOKであれば範囲チェック(if((e.pageY < ($(document).height() + upperLimit)) && (e.pageY > ($(document).height() + lowerLimit))))と同じ条件(if(e.pageY == ($(document).height() - offset)))を交換要件。

+0

ありがとうございますSandeepan、これはIE8であなたのために働いていますか?私は、 "到達した底"が現れないことを意味します。残念ながら、私は底から正確なピクセルが必要です。 – ragebiswas

+1

@Raj - http://jsfiddle.net/sandeepan_nits/3Ys35/7/offset = 16はIE6で動作します。私はこれがあなたがこの方法で最も近づけることができると思います。必要なオフセット、ブラウザの検出、またはより良いjqueryの検出機能を使用して条件を確定することができたら、それを確認します。 –

+0

ありがとうございますが、私はさまざまなブラウザでさまざまなオフセットがきれいな解決策だとは思いません:( – ragebiswas

関連する問題