繁体   English   中英

在iOS上处理jQuery Mobile点击事件后阻止点击事件

[英]Prevent click event after handling jQuery Mobile tap event on iOS

为了提高我们在iPad上的网络应用程序的响应能力,我从响应点击事件切换到响应jQuery Mobile“点击”事件。 它工作得很好,反应灵敏得多,但它引入了一个新的错误。

当用户点击iPad上的屏幕时,iOS会发送TOUCHSTART和TOUCHEND事件,jQuery Mobile将其视为“点按”。 但是300毫秒后,iOS发送了一个“点击”事件。 如果我在“点击”发生之前通过前进到下一页来响应“点击”,则下一页接收“点击”,如果新页面上的按钮恰好出现在点击位置,则点击它。

我现在的解决方法是为用户提供视觉反馈以响应“点击”,但在继续下一页之前等待“点击”。

我的问题是,是否可以处理“点击”并以某种方式告诉Safari或iOS不要发送“点击”。

你可以告诉;

$('elementsSetThatCanBeTapped').on('tap', function(e) {
   e.preventDefault();
   e.stopPropagation();
   $(this).off('click');
})

在点击发生的同一位置注册的点击事件称为Ghost点击。 jQuery Mobile在他们的vmouse事件中有部分解决方案。

但是对于你的选择的一个很好的综合,你不能过去: http//www.appwards.nl/blog/2013/01/26/javascript-powered-webapps-and-click-versus-tap

您应该能够添加一个返回false或e.stopPropagation()并将相同的函数附加到tap并单击,这样只触发其中一个事件。

如果您仍希望能够在没有触摸显示的计算机上使用Web应用程序,您可能需要考虑将click事件与fastclick库一起使用: https//github.com/ftlabs/fastclick此库消除了300ms自动延迟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM