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)当窗口开始滚动时,“滚动”设置为真

2) timeout 将在滚动执行后立即将滚动设置为 false,但是:

3) Mobile Safari 在滚动(包括动量)时不执行 setTimeout。因此,第一次执行只会在滚动真正结束时发生。

于 2013-09-11T12:03:46.893 回答