Javascript iOS上的Jquery mobile-动量滚动防止调用单击处理程序
基本上和标题听起来一样Javascript iOS上的Jquery mobile-动量滚动防止调用单击处理程序,javascript,jquery,jquery-mobile,cordova,Javascript,Jquery,Jquery Mobile,Cordova,基本上和标题听起来一样 如果我实现了溢出滚动触摸,即iOS上类似本机的动量滚动,在滚动的“减速”阶段,任何点击都无法注册。这有什么原因吗?或者一种防止这种情况的方法?Mobile Safari不会从滚动事件期间注册的触摸中合成点击事件。如果要侦听触摸事件,请为其注册处理程序:touchstart、touchend、touchmove,等等 警告:我广泛使用jQuery,jquerymobile一点也不使用,所以如果在点击合成的事件处理行为上存在差异,这个答案并不能反映这一点 演示: 在Mobi
如果我实现了溢出滚动触摸,即iOS上类似本机的动量滚动,在滚动的“减速”阶段,任何点击都无法注册。这有什么原因吗?或者一种防止这种情况的方法?Mobile Safari不会从滚动事件期间注册的触摸中合成
点击事件。如果要侦听触摸事件,请为其注册处理程序:touchstart
、touchend
、touchmove
,等等
警告:我广泛使用jQuery,jquerymobile一点也不使用,所以如果在点击合成的事件处理行为上存在差异,这个答案并不能反映这一点
演示:
- 在Mobile Safari中加载页面
- 有关被捕获事件的日志,请参阅“控制台”面板
- 有关事件处理代码,请参见“JavaScript”面板
首先,在不滚动的情况下点击“输出”面板,注意传播的事件是:
touchstart
:手指轻触面板
touchend
:手指松开面板
mousedown
:Safari合成事件
mouseup
:Safari合成事件
单击
:Safari合成事件
现在滚动“输出”面板,然后点击它停止滚动,注意传播的事件是:
touchstart
:手指轻触面板开始拖动
touchmove
和scroll
事件的循环,表示手指拖动面板和面板滚动作为响应
touchend
:手指松开面板
- 一些
scroll
事件表示面板以动量滚动
touchstart
:手指轻触面板以停止滚动
滚动
:如果触发事件,则表示滚动减速
touchend
:手指松开面板
希望这有帮助。很有意义,谢谢,很好的解释和示例。现在不太确定解决这个问题的最佳方法。绑定到touchend事件?这取决于您试图完成的任务。如果您想在用户触摸时立即看到某些内容,请使用touchstart
,但请注意,用户可能正在“轻弹”以继续或加速滚动。如果要确保事件是停止滚动的触摸,则必须有状态地管理滚动
和触摸(开始|结束)
事件,这同样取决于您试图完成的操作。抱歉,我刚刚看到了这一点。基本上,如果内容仍在“减速”,那么点击页面底部的导航栏就不起作用。单击/触摸导航栏可简单地停止减速。这是jquerymobilev1.4的内部版本