1

ページが現在モバイルでスクロールしているかどうかを検出できますか? 勢いスクロールを含む?

基本的に、関数を実行したいのですが、スクロールがまったく発生していない場合に限ります。

if(!scrolling){
    //do stuff
}
4

1 に答える 1

1
var scrolling = false;
var endScrolling;

$(window).on("scroll", function() {
    scrolling = true;
    endScrolling = window.setTimeout(function() {
        scrolling = false;
        window.clearTimeout(endScrolling);
    }, 20);
});

基本的にここで何が起こるかは次のとおりです。

1) ウィンドウがスクロールを開始すると、「scrolling」が true に設定されます

2) タイムアウトは、スクロールが実行されるとすぐに false に設定されますが、次のようになります。

3) モバイル Safari は、スクロール中 (運動量を含む) に setTimeout を実行しません。したがって、最初の実行は、スクロールが実際に終了したときにのみ発生します。

于 2013-09-11T12:03:46.893 に答える