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

Ada*_*ath 7 javascript mobile android webkit dom-events

我试图检测用户在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);
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助是极大的赞赏!

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

谢谢


更新:刚试过使用'scroll'事件来检测这个.结果好坏参半.在Android模拟器上,它几乎正常工作,但在实际手机(2.1 Sense Hero GSM)上非常间歇,即仅检测到10个滚动中的1个.

即使它在模拟器上"工作",当您在页面顶部时向上滚动(即向上推看地址栏)时,它也不会触发滚动事件.这是一个问题,因为页面实际上已滚动(更改位置),但我没有收到该事件.

请注意,iPhone似乎确实触发并正确检测到事件(至少在模拟器中,此刻无法访问设备).

有什么想法吗?


更新2:新的'scroll'事件似乎在某些Android设备上起作用(与模拟器(1.6和2.1)相同).将继续调查,试图缩小此范围.

滚动到地址栏时仍然没有触发"滚动"问题.触摸后可能需要某种"滚动"事件检测和移动轮询的混合解决方案.

Mic*_*any 1

Hero 会很有帮助地介入偶尔发生的事件,但不会将它们正确地报告给 javascript。我们在 Android 开发中发现了很多这样的问题。有时,你拿手机的方式似乎很重要(不是开玩笑!)