在安卓浏览器上检测滚动事件

6
我正在尝试在Android浏览器中检测滚动事件(我的具体版本是2.1,但我希望它也能在旧版本上工作)。这似乎是不可能的!
我首先尝试了这个:
document.addEventListener('scroll', function(){ alert('test'); }, false);

但是除了页面加载时,什么都不会触发。
我想:好吧,让我们疯狂一点,模拟它: 1. 检测 touchend 事件 2. 轮询 window.pageYOffset,以便我们知道窗口何时停止滚动 3. 手动触发我想要在滚动时执行的用户函数。
不幸的是,touchend 事件似乎也没有被触发...事实上,当我们不滚动,只是轻触屏幕(touchstart + touchend)时,它可以正常工作。一旦我们在其中滚动页面(touchstart + touchmove + touchend),所有东西都会崩溃。
现在,我的最基本的示例只包含这些内容:
document.addEventListener('touchend', function(){ alert('test'); }, false);

但是当我们用手指滚动并释放触摸时,警报不会弹出...

有人有建议吗?

谢谢。

1个回答

2
你可能想要爬取JQuery Mobile的源代码,它支持安卓浏览器并且有滚动事件监听器。
或者至少文档中是这样说的。 :p 这里是源代码。
$.event.special.scrollstart = {
    enabled: true,

        setup: function() {
            var thisObject = this,
                $this = $( thisObject ),
                    scrolling,
                    timer;

            function trigger( event, state ) {
                scrolling = state;
                var originalType = event.type;
                event.type = scrolling ? "scrollstart" : "scrollstop";
                $.event.handle.call( thisObject, event );
                event.type = originalType;
            }

            // iPhone triggers scroll after a small delay; use touchmove instead
            $this.bind( scrollEvent, function( event ) {
                if ( !$.event.special.scrollstart.enabled ) {
                    return;
                }

                if ( !scrolling ) {
                    trigger( event, true );
                }

                clearTimeout( timer );
                timer = setTimeout(function() {
                    trigger( event, false );
                }, 50 );
            });
        }
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接