【发布时间】:2011-03-19 02:23:35
【问题描述】:
我正在尝试检测用户何时在 Android 上使用 Javascript 完成了网页滚动。我拥有的脚本在 iPhone 上运行,对我来说它应该在 Android 上运行似乎是正确的。无论如何,一个sn-p:
previous = pageYOffset;
interval = setInterval(function() {
//Has scrolling stopped?
if(previous == pageYOffset) {
clearInterval(interval);
//DO SOMETHING AFTER SCROLL COMPLETE
} else {
previous = pageYOffset;
}
}, 200);
基本思想,每 200 毫秒轮询一次 pageYOffset,如果没有变化,则不会发生滚动。否则,请继续寻找。
正如我所说,这适用于 iPhone,所以我假设它与 Android 有关,可能在滚动期间没有更新 pageYOffset?
非常感谢任何帮助!
注意:我选择这条路线是因为我找不到 isScrolling 属性或 scrollStop 类型的事件。如果我忽略了一个,请告诉我:)
更新:刚刚尝试使用“滚动” 事件来检测这一点。结果好坏参半 这里。在Android模拟器上是 工作几乎正常,但非常 在实际手机上断断续续(2.1 Sense Hero GSM),即只有十分之一 检测到卷轴。
即使它正在“工作” 模拟器它没有触发滚动 当您“向上”滚动时的事件 位于页面顶部(即 向上推以查看地址栏)。这 是页面实际存在的问题 被滚动(改变了位置),但我 我没有收到活动。
请注意,iPhone 似乎确实会启动并且 正确检测事件(至少 在模拟器中,无法访问设备 目前)。
有什么想法吗?
更新 2:新的“滚动”事件似乎 工作(在与 模拟器(1.6 和 2.1))在一些 安卓设备。将继续 进行调查以缩小范围 下来。
仍然没有“滚动”的问题 当您向上滚动到 地址栏。可能需要一些 一种“滚动”的混合解决方案 事件检测和移动轮询 触摸后。
【问题讨论】:
标签: javascript android mobile webkit dom-events