【问题标题】:mobile Safari vertical scrolling - how to detect when the window has stopped moving in Javascript移动Safari垂直滚动 - 如何检测窗口何时停止在Javascript中移动
【发布时间】:2012-05-13 15:51:53
【问题描述】:

有没有js方法来检测长长的iOS safari页面上的垂直轻弹何时停止移动,比如相当于伪:

window.element.momentumScroll == false

这是为了检测减速的内容是否还在移动或者滚动事件是否已经结束。

感谢所有线索。

附录我没有在我的代码中实现任何外部库(没有 jQuery 等),需要找到一个本地 js 侦听器/方法来告诉我轻弹滚动何时结束。

doc.addeventlistener("scroll", function(e){setvariable to 1}, false)

doc.addeventlistener("noscroll", function(e){setvariable to 0}, false)

【问题讨论】:

    标签: javascript ios scroll detect


    【解决方案1】:

    方法:

    startTop = window.pageYOffset on touchStart
    
    currTop = window.pageYOffset on touchEnd
    deltaTop = startTop - currTop
    deltaTop == 0 means no momentum scrolling occurred during another event.
    

    【讨论】:

      【解决方案2】:

      我不确定我是否正确理解了这个问题。我相信您正在尝试实现诸如在页面到达底部时加载新内容之类的目标? (请原谅我假设)

      如果您的事件基于触摸,我认为您正在寻找一些 javascript 手势库。

      上面有 Mootools 库 电动工具:http://cpojer.net/PowerTools/#!

      Drag.Flick:http://mootools.net/forge/p/drag_flick

      在其他框架中也应该有相同的实现。 (jQuery:http://jgestures.codeplex.com/)

      可能的解决方案是寻找一个事件,该事件可以返回超出 document.body.clientHeight 的当前触摸位置(阅读:不是跨平台)。

      希望我能指出正确的方法。

      【讨论】:

      • 我现在可能有更好的理解。当“轻弹”动作停止滚动时,您是否正在寻找听众?如果是这样,请查看 Drag.Flick 演示 onMoveEnd();
      • 见上面的附录 - 我希望能更清楚地说明这一点。谢谢。
      • 明白。但是,我相信没有这样的事件(滚动),主要由这些库实现并计算事件的持续时间/方向以模拟触摸。给出的链接的目的是了解他们如何实现他们的触摸。你会在那里找到自己的路。祝你好运。 ;)
      • 谢谢 Ikmal - 我现在正在使用一种方法来监控 touch start 和 touchend 之间的 div.style.Top 属性 - 如果有运动,我知道动量滚动仍然处于活动状态...
      • 我很高兴你找到了你的解决方案。很乐意提供帮助。祝你的应用好运。 :)
      【解决方案3】:

      只需在 touchend 事件中执行 setTimeout。一旦触摸端停止工作,超时将触发。定时器在触摸事件期间暂停。在 ios 上,一旦页面停止滚动并且不再有动力,就会触发设置超时。

      body.addeventlistener("ontouchend", function(e){
          setTimeout(function(){
             alert("done moving")
          },0); 
      }, false);
      

      $('body').on('touchend.scroll', function () { 
          setTimeout(function(){
             alert("done moving")
          },0); 
      });
      

      请注意,一旦您松开手指,Android 就会触发该事件。计时器似乎没有暂停。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-09
        • 2015-08-03
        • 1970-01-01
        • 2011-09-06
        相关资源
        最近更新 更多