6

Ajax 呼び出しを行うことができるように、Web ページのスクロールの終了を計算する必要があります。stackoverflow で投稿を検索しましたが、解決策がうまくいきませんでした。

私はそれを決定するために以下のコードイオン順序を使用しています:

$(window).scrollTop() == $(document).height() - $(window).height()

しかし、上記の条件は失敗し、ページのスクロールがいつ終了するかを知ることができません。

LHS と RHS で値が一致しないため、条件は失敗します。私が使用したことを確認するために:

$(window).scrollTop() == $(document).height() - $(window).height() - 13

chrome と firefox では機能しますが、IE では失敗します。具体的な解決策が必要で、値をハードコーディングしたくありません。それを正しくするのを手伝ってください。

編集:具体的には、垂直スクロールバーの終わりを計算しようとしています。

4

4 に答える 4

3

これが私がすることです:

$(window).on('scroll', function() {
if($(window).scrollTop() != 0)
{    
    if( $(window).height() + $(window).scrollTop() >= $(document).height() )
    {
    //YES, I AM EXACTLY AT THE END OF THE SCROLL, PLZ FIRE AJAX NOW
    }
}
});

CAUTION : ページのどの要素のスタイルでも、負の上部余白を持つことに十分注意してください!! 計算が相殺される可能性があります。

于 2012-09-05T10:17:45.257 に答える
1

スクロールの終わりを計算するには、scrollHeight プロパティを試してください。

于 2012-09-05T10:15:12.320 に答える
1

これにより、ページの高さが取得されます (jQuery ではなく JavaScript を使用します)。

var height = document.body.clientHeight;

これが、問題に対する最良のクロスブラウザー ソリューションであることがわかります。

于 2012-09-05T10:15:28.060 に答える
0

方法は次のとおりです。スクロールされた距離を取得し、ウィンドウの高さを追加してから、それらがドキュメントの高さと等しいかどうかを確認します。

$(window).on('scroll', function() {
    if (($(this).scrollTop() + $(this).height()) - $(document).outerHeight(true) >= 0) {
        alert('Scrolled to bottom');
    }
});

フィドル

これは、5 つのブラウザーすべてで機能します。

于 2012-09-05T10:28:07.353 に答える