10

誰かがこれを説明して助けてくれますか。スクロール機能がページを下にドラッグしているため、Web ページの表示が遅くなります。遅延を追加する必要がありますが、これを行う方法がわかりません。

$(window).scroll(handleScroll);
4

2 に答える 2

34

単純なスロットルデバウンス関数を記述して、スクロールイベントが処理される1秒あたりの時間を制限することができます。

function debounce(method, delay) {
    clearTimeout(method._tId);
    method._tId= setTimeout(function(){
        method();
    }, delay);
}

$(window).scroll(function() {
    debounce(handleScroll, 100);
});

これにより、への各呼び出しの間に少なくとも100ミリ秒の間隔が確保されますhandleScroll(つまり、1秒間に最大10回呼び出されます)。


zzzzBovが指摘したように、Zakasがスロットル機能として説明しているのは、実際にはデバウンス機能です。違いは、デバウンスは余分なスクロールイベントを破棄するのに対し、スロットル機能は後で処理するためにそれらをキューに入れる必要があることです(ただし、指定された最大レートで)。

スクロールイベントの場合、実際のスロットルは必要ありません。

于 2012-08-17T16:22:15.090 に答える