javascript - 检测滚动完成/结束

标签 javascript jquery scroll dom-events

我想检测用户何时停止滚动页面/元素。这可能很棘手,因为最近对 OSX 滚动行为的增强创造了这种新的惯性效应。是否触发了事件?

我能想到的唯一其他解决方案是在页面/元素的滚动位置不再改变时使用间隔来拾取,例如:

var element     = $( el );
var previous    = element.scrollLeft();
var current;

element.scroll( function(event)
{
    current = element.scrollLeft();

    if ( current === previous )
    {
        // user has stopped scrolling
    }

    previous    = current;
});

最佳答案

This可能有用。

// Setup isScrolling variable
var isScrolling;

// Listen for scroll events
window.addEventListener('scroll', function ( event ) {

    // Clear our timeout throughout the scroll
    window.clearTimeout( isScrolling );

    // Set a timeout to run after scrolling ends
    isScrolling = setTimeout(function() {

        // Run the callback
        console.log( 'Scrolling has stopped.' );

    }, 66);

}, false);

关于javascript - 检测滚动完成/结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10817088/

相关文章:

javascript - 如何使用 phonegap javascript 获取 IP 地址

javascript - 为不同的父 div 滚动 Javascript 函数

jquery - 固定位置中断 JQuery 悬停滚动条

javascript - 获取 Chart.js 数据的 JSON 字符串时出现问题

javascript - MongoDB:如何按值查找键

javascript - "/users/#something here"的 window.location.pathname

jquery - 如何通过悬停在每个链接上删除类隐藏

android - 如何以编程方式删除我的 NestedScrollView 的布局行为?

javascript - 如何修复 jQuery 中的重复回调

jquery - 仅在表中的几列上创建溢出