Jquery移动iOS -动量滚动防止点击处理程序被调用
Jquery mobile on iOS - momentum scroll prevents click handler being called
基本上和标题一样。
如果我执行溢出滚动触摸,即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
:手指轻按面板开始拖动 - 一个周期的
touchmove
和scroll
事件表示手指拖动面板和面板滚动响应 -
touchend
:手指松开面板 - 代表面板滚动动量的
scroll
事件数 -
touchstart
:手指轻按面板停止滚动 -
scroll
:如果事件被触发,表示滚动减速 -
touchend
:手指松开面板
相关文章:
- keyup事件处理程序更改焦点不适用于快速键入
- 提示使用服务器端事件处理程序激活JavaScript
- 将事件处理程序绑定到任何可能的事件
- 正在将事件处理程序添加到不存在的类
- 在AJAX回调和呈现PIXIJS之间处理程序流时遇到了问题
- Adobe Edge:动画完成时添加onComplete处理程序
- 是否可以从输入处理程序中确定输入的类型
- 在循环中附加事件处理程序时出现浏览器性能问题
- 在同一个javascript事件处理程序中调用不同的函数
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 检查事件处理程序参数
- 实现延迟的jquery更改事件处理程序
- 平均值.on(事件[,选择器][,数据],处理程序)
- getSript在同一对象上多次添加处理程序
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 如何让React JS点击处理程序在执行时更新DOM
- 如何使jQuery的“bind”或“on”事件处理程序幂等
- Backbone listenTo不将jquery函数作为处理程序进行激发
- 带有参数的Javascript事件处理程序
- Jquery事件处理程序仅适用于匿名函数