繁体   English   中英

在Android浏览器上检测滚动事件

[英]Detect scroll event on Android browser

我正在尝试在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);

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

有没有人有建议?

谢谢。

您可能想要抓取JQuery Mobile的源代码,它支持Android浏览器并具有滚动事件侦听器。

或者至少他们说它在文档中做了。 :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 );
            });
        }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM