Jquery移动iOS -动量滚动防止点击处理程序被调用

Jquery mobile on iOS - momentum scroll prevents click handler being called

本文关键字:处理 程序 调用 iOS 移动 滚动 Jquery      更新时间:2023-09-26

基本上和标题一样。

如果我执行溢出滚动触摸,即iOS上的原生动量滚动,任何点击都无法在滚动的"减速"阶段注册。这是有原因的吗?或者有办法防止这种情况发生?

Mobile Safari不从滚动事件期间注册的触摸中合成click事件。如果你想监听一个触摸事件,为它们注册处理程序:touchstart, touchend, touchmove,等等

警告:我广泛使用jQuery, jQuery手机没有,所以如果有不同的事件处理行为周围的点击合成,这个答案并没有反映。

演示:http://jsbin.com/noyer/2/edit

  • 在Mobile Safari中加载页面
  • 请参阅"控制台"面板查看正在捕获的事件日志
  • 查看"JavaScript"面板中的事件处理代码

首先,点击"Output"面板,不要滚动,注意传播的事件如下:

  • touchstart:手指轻击面板
  • touchend:手指松开面板
  • mousedown: Safari合成事件
  • mouseup: Safari合成事件
  • click: Safari合成事件

现在滚动"输出"面板,然后点击它停止滚动,注意传播的事件如下:

  • touchstart:手指轻按面板开始拖动
  • 一个周期的touchmovescroll事件表示手指拖动面板和面板滚动响应
  • touchend:手指松开面板
  • 代表面板滚动动量的scroll事件数
  • touchstart:手指轻按面板停止滚动
  • scroll:如果事件被触发,表示滚动减速
  • touchend:手指松开面板