iOS上的Jquery mobile - 动量滚动可防止调用点击处理程序

时间:2014-08-05 12:14:53

标签: javascript jquery jquery-mobile cordova

基本上标题听起来。

如果我实现了溢出滚动触摸,即在iOS上滚动的原生动量,任何点击都无法在"减速"卷轴的阶段。这有什么理由吗?还是一种防止这种情况的方法?

1 个答案:

答案 0 :(得分:1)

Mobile Safari不会从滚动事件期间注册的触摸中合成click事件。如果您想收听触摸事件,请为其注册处理程序:touchstarttouchendtouchmove

警告:我广泛使用jQuery,jQuery mobile根本没用,所以如果点击合成的事件处理行为存在差异,那么这个答案并没有反映出来。

DEMO:http://jsbin.com/noyer/2/edit

  • 在Mobile Safari中加载页面
  • 有关正在捕获的事件的日志,请参阅“控制台”面板
  • 请参阅“JavaScript”面板了解事件处理代码

首先,点击“输出”面板而不滚动,并注意传播的事件是:

  • touchstart:手指点击面板
  • touchend:手指释放小组
  • mousedown:Safari合成事件
  • mouseup:Safari合成事件
  • click:Safari合成事件

现在滚动“输出”面板,然后点击它以停止滚动,并注意传播的事件是:

  • touchstart:手指轻触面板以开始拖动
  • touchmovescroll个事件的循环,表示手指拖动面板,面板滚动响应
  • touchend:手指释放小组
  • 表示面板滚动动量的一些scroll事件
  • touchstart:手指点击面板停止滚动
  • scroll:如果事件被触发,则表示滚动减速
  • touchend:手指释放小组

希望这有帮助。