【问题标题】:Detect scroll event on Android browser在Android浏览器上检测滚动事件
【发布时间】:2011-04-17 18:14:59
【问题描述】:

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

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

有人有建议吗?

谢谢。

【问题讨论】:

    标签: javascript android event-handling scroll touch


    【解决方案1】:

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

    Or at least they say it does in the docs. :p

    Here's the source

    $.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 );
                });
            }
    };
    

    【讨论】:

      猜你喜欢
      • 2016-04-20
      • 2015-04-11
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 2015-06-24
      相关资源
      最近更新 更多