在iOS上处理jQuery Mobile点击事件后,阻止点击事件
Prevent click event after handling jQuery Mobile tap event on iOS
为了提高iPad上web应用程序的响应能力,我从响应点击事件切换到响应jQuery Mobile"点击"事件。它运行良好,响应速度更快,但它引入了一个新的错误。
当用户在iPad上点击屏幕时,iOS会发送TOUCSTART和TOUCHEND事件,jQuery Mobile将其视为"点击"。但300毫秒后,iOS发送了一个"点击"事件。如果我在"点击"发生之前通过前进到下一页来响应"点击",那么下一页就会收到"点击";如果新页面上的按钮恰好出现在点击的位置,那么它就会被点击。
我现在的解决方法是对"点击"做出反应,向用户提供视觉反馈,但等待"点击"后再进入下一页。
我的问题是,是否有可能处理"点击",并以某种方式告诉Safari或iOS根本不要发送"点击"。
您可以判断;
$('elementsSetThatCanBeTapped').on('tap', function(e) {
e.preventDefault();
e.stopPropagation();
$(this).off('click');
})
在点击发生的同一位置注册的点击事件被称为Ghost click。jQuery Mobile在其vmouse事件中提供了部分解决方案。
但要想很好地总结你的选择,你不能错过:http://www.appwards.nl/blog/2013/01/26/javascript-powered-webapps-and-click-versus-tap
您应该能够添加一个return false或e.stopPropagation()
,并将相同的函数附加到两个点击中,这样只会触发其中一个事件。
如果您仍然希望能够在没有触摸显示器的计算机上使用web应用程序,您可能需要考虑将单击事件与fastclick库一起使用:https://github.com/ftlabs/fastclick这个库自动消除了300毫秒的延迟。
- 触摸启动事件未在iframe iOS 6中启动
- Phonegap iOS-设备准备不发射其他事件做
- jQuery ContextMenu事件在IOS 8.2中不起作用
- Javascript touchend(滚动)事件在ios 4中的UIWebView中不起作用
- iOS/HTML5上的视频相关事件跟踪
- iOS 上的 TouchMove 事件
- 在iOS上处理jQuery Mobile点击事件后,阻止点击事件
- iOS上未触发HTML5视频事件
- WebView中的Html页不会激发'可见性更改'用户按下主页按钮时的事件(iOS 8)
- 如何在 iOS 设备上使用 JavaScript(或 CSS)添加点击事件
- iOS Touch 事件在 DOM 插入时传递
- 在 iFrame 中滚动事件侦听器在 iOS 上不起作用
- 触摸事件对位置:固定;元素在 iOS 上无法正常工作
- 在 iOS 中,哪些 JavaScript 事件符合 HTML5 视频/音频的“用户启动”条件
- 在 Safari 浏览器 (iOS 7) 上,在捏合缩放下调整事件大小,仅在横向缩放中
- 科尔多瓦 iOS 按钮事件
- 在 iOS 上照片擦除图库关闭事件
- iOS uiwebview在加载整个html文件之前触发finishLoad事件
- 使用iOS 8“扫描信用卡”功能时,输入字段上触发了什么JS事件
- Javascript中的触摸和点击事件- iOS移动Safari