使用javascript滚动滚动条或鼠标滚轮后的火灾事件

Jos*_*eph 15 javascript jquery

我想知道是否有可能触发一个事件后,使用滚动条或鼠标滚轮(或带有触摸屏设备上轻扫)当一个页面的滚动.

基本上,我想检测用户何时停止滚动,以便我可以加载AJAX,而不是在滚动时加载.

似乎jQuery's .scroll()每次用户滚动时都会触发,并且一直有事件触发似乎很笨拙.有没有这样的东西.onScrollAfter(),同义词.onMouseUp()

我想知道这是否可行(或者如果函数已经存在)而不使用框架,尽管我会考虑一个; 特别是jQuery.

Rob*_*b W 7

此事件不存在.您可以使用超时来模拟它:

示例(概念代码):

(function() {
    var timer;
    /* Basic "listener" */
    function scroll_finish(ev) {
        clearTimeout(timer);
        timer = setTimeout(scroll_finished, 200, ev);
        //200ms. Too small = triggered too fast. Too high = reliable, but slow
    }
    window.onscroll = scroll_finish; // Or addEventListener, it's just a demo

    // Fire "events"
    var thingey = [];
    function scroll_finished(ev) {
        // Function logic
        for (var i=0; i<thingey.length; i++) {
            thingey[i](ev);
        }
    }
    // Add listener
    window.addScrollListener = function(fn) {
        if (typeof fn  === 'function') {
            thingey.push(fn);
        } else {
           throw TypeError('addScrollListener: First argument must be a function.');
        }
    }
    window.removeScrollListener = function(fn) {
        var index = thingey.indexOf(fn);
        if (index !== -1) thingey.splice(index, 1);
    }
})();
Run Code Online (Sandbox Code Playgroud)