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

时间:2013-12-03 19:25:27

标签: javascript jquery ios jquery-mobile

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

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

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

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

4 个答案:

答案 0 :(得分:3)

你可以告诉;

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

答案 1 :(得分:2)

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

但是,如果您对选项进行了很好的综述,那么您就无法过去:http://www.appwards.nl/blog/2013/01/26/javascript-powered-webapps-and-click-versus-tap

答案 2 :(得分:0)

你应该能够添加一个返回false或e.stopPropagation()并将相同的功能添加到点击和点击,只会触发其中一个事件。

答案 3 :(得分:0)

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