私はInfinite Load
(Lazy Loadなど)タイプの機能に取り組んでいます。これまでの機能は次のとおりです。
$(window).scroll(function() {
var ScrollPosition = $(window).scrollTop() + $(window).height();
var LoadMorePosition = $(document).height()-100;
if( ScrollPosition == LoadMorePosition ) {
console.log('loading more');
loadMoreItems();
}
});
loadMoreItems
人がしきい値までスクロールすると、関数が20〜30回呼び出されることを除いて、ほとんどの部分で機能しています。
私は setTimeout タイプのものがうまくいくかもしれないと考えていましたが、Ajax コンテンツが十分に速くロードされた場合にのみうまくいくことに気付きました (これは保証されていません)。
私が必要としているのは、それらがしきい値に達したかどうかを検出し、スクロールしきい値に再度達するまで関数を 1 回だけ呼び出す方法です。