Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测Android浏览器上的滚动事件_Javascript_Android_Event Handling_Scroll_Touch - Fatal编程技术网

Javascript 检测Android浏览器上的滚动事件

Javascript 检测Android浏览器上的滚动事件,javascript,android,event-handling,scroll,touch,Javascript,Android,Event Handling,Scroll,Touch,我正在尝试在Android浏览器中检测滚动事件(我的特定版本是2.1,但你希望它在旧版本上也能工作)。这似乎不可能 我第一次尝试这个: document.addEventListener('scroll', function(){ alert('test'); }, false); 但不会触发任何操作(页面加载时除外) 我想:好吧,让我们疯狂地模仿它: 1.检测触摸端 2.轮询window.pageYOffset,以便我们知道窗口何时停止滚动 3.手动触发我想要的滚动用户功能 不幸的是,tou

我正在尝试在Android浏览器中检测滚动事件(我的特定版本是2.1,但你希望它在旧版本上也能工作)。这似乎不可能

我第一次尝试这个:

document.addEventListener('scroll', function(){ alert('test'); }, false);
但不会触发任何操作(页面加载时除外)

我想:好吧,让我们疯狂地模仿它: 1.检测触摸端 2.轮询window.pageYOffset,以便我们知道窗口何时停止滚动 3.手动触发我想要的滚动用户功能

不幸的是,touchend事件看起来也不会被触发。。。事实上,当我们不滚动,只点击屏幕(touchstart+touchend)时,它就工作了。只要我们在两个页面之间滚动页面(touchstart+touchmove+touchend),它就会破坏一切

现在,我最基本的示例仅包含以下内容:

document.addEventListener('touchend', function(){ alert('test'); }, false);
但当我们用手指滚动并释放触摸时,警报不会显示

有人有什么建议吗


谢谢。

您可能需要对JQuery Mobile的源代码进行爬网,它支持android浏览器,并具有滚动事件侦听器

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