检测当前是否在Android上滚动网页

时间:2010-07-21 16:08:22

标签: javascript android javascript-events mobile webkit

我正在尝试检测用户在Android上使用javascript滚动网页的时间。我的脚本正在使用iPhone,对我而言,它应该适用于Android。无论如何,一个片段:

previous = pageYOffset;
interval = setInterval(function() {
    //Has scrolling stopped?
    if(previous == pageYOffset) {
        clearInterval(interval);
        //DO SOMETHING AFTER SCROLL COMPLETE
    } else {
        previous = pageYOffset;
    }
}, 200);

基本思路,每200ms轮询一次pageYOffset,如果没有变化则没有滚动发生。否则,继续寻找。

正如我所说,这适用于iPhone,所以我假设它与Android有关,可能在滚动期间无法更新pageYOffset?

非常感谢任何帮助!

注意:我选择了这条路线,因为找不到isScrolling属性或scrollStop类型事件。如果我忽略了一个,请告诉我:)

由于


  

更新:刚尝试使用'滚动'   事件来检测这个。结果喜忧参半   这里。在Android模拟器上它是   工作几乎正确,但非常   在实际手机上断断续续的(2.1   Sense Hero GSM),即只有十分之一   检测到卷轴。

     

即使它正在'工作'上   模拟器它没有触发滚动   当你向上滚动'向上'时的事件   位于页面顶部(即   推高看地址栏)。这个   页面实际上是一个问题   滚动(改变位置),但我   我没有收到这个活动。

     

请注意,iPhone似乎确实很火   正确检测事件(至少   在模拟器中,无法访问设备   目前)。

     

任何想法的人?


  

更新2:似乎有新的“滚动”事件   工作(与...相同)   某些模拟器(1.6和2.1))   Android设备。将继续   调查试图缩小这一点   下来。

     

仍然存在'滚动'的问题   向上滚动到   地址栏。可能必须有一些   一种'滚动'的混合解决方案   事件检测和移动轮询   触摸后。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

英雄有助于插入偶尔发生的事件,并且没有正确地向javascript报告。我们在Android开发中发现了其中的一些。有时你拿着电话的方式似乎很重要(不是开玩笑!)

答案 2 :(得分:0)

也许你可以使用onScrollListener?

how to detect Android ListView Scrolling stopped?

这家伙正试图检测停止,但我确信它也适用于滚动。