【问题标题】:Detect if currently scrolling a web page on Android检测当前是否在 Android 上滚动网页
【发布时间】: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


    【解决方案1】:

    Hero 会主动介入偶尔发生的事件,并且不会正确地向 javascript 报告这些事件。我们在 Android 开发中发现了其中的一些。有时,拿手机的方式似乎很重要(不是开玩笑!)

    【讨论】:

      【解决方案2】:

      Using window.onscroll event to detect page/frame scrolling 是否有助于回答您的问题?该海报使用window.onscroll 事件来检测滚动,因此也许您可以保存当前位置并在事件处理程序中触发 setTimeout 调用。如果当回调发生时,你在同一个位置,那么滚动就会停止。

      【讨论】:

      • 据我所知,这与我通过 addEventListener 跟踪的滚动事件相同。开始滚动不是问题(实际上我在每次触摸屏幕时都会启动我的脚本),它正在找出滚动完成的时间。似乎 iPhone 在滚动结束时触发了滚动事件(完美),Android 模拟器和一些手机在滚动时触发了多次(完美),尽管我发现有几个在开始时只触发一次(不好)。我目前的解决方案是轮询页面以确定它何时停止移动。谢谢
      【解决方案3】:

      也许你可以使用 onScrollListener?

      how to detect Android ListView Scrolling stopped?

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

      【讨论】:

      • 我认为这可能超出了问题的范围,尝试获取页面是否正在滚动来自 javascript。除非 OP 在应用程序中托管 WebView,否则它们可能没有正确的挂钩。
      • 我看了看,不过 Quintin 是对的,我只是在网络上,不是应用程序。不过,这确实让我考虑尝试使用“滚动”事件,上面发布了更新。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多