监听touchend有时会触发移动点击事件
listening for touchend sometimes fires click event mobile
我有一个用phonegap构建的应用程序。
我正在监听touchstart/touchend事件以使其做出响应。
有时,触摸端的事件监听器会启动,但随后,例如,当点击事件在300ms后启动时,输入会在之后集中。
一个例子是,我有一个菜单侧边栏。每个侧边栏列表项都侦听touchend事件。收到事件后,侧边栏关闭,并显示相关页面。但是,如果相关页面包含一个表单元素,而该表单元素正是用户为侧边栏列表项单击的位置,则该表单元素将成为焦点。
在整个应用程序中阻止这种情况的最佳方法是什么?它发生在不同的场景中,不同的手机会有所不同。
我尝试过stopPropagation等方法,但这些方法只在少数情况下有效,如果可能的话,我需要一个通用的跨应用程序解决方案,而不是为每个函数添加。
类似于:
$('body').on('touchend', function(){
//stop any further touchends/ clicks from firing
//apart from the 1 i do want
})
你可以试试"touchcancel"而不是"touchend",看看它是否有效:)祝你好运。
您的应用程序运行速度很快;)简单的方法:只需放入一个setTimeout(gotopage(),100)每个按钮/菜单动作
艰难的道路:若你们真的不想放一个setTimeout,你们应该看看冒泡是如何工作的,问题就在这里
提示:无论如何,为了避免300毫秒,你应该使用FTLABS的快速点击:https://github.com/ftlabs/fastclick和use click事件,它将为您完成任务(您仍然需要使用setimeout技巧)
相关文章:
- 如何从画布上的某个移动事件中获取X和Y
- 如何在jquery中找到鼠标滚轮/触摸移动事件的走向
- 如何在鼠标移动事件时更改图像的窗口中心和宽度
- 如何从QT调用滑块移动事件
- 将stopImmediatePropagation()应用于所有jQuery移动事件
- 鼠标移动事件导致无限循环,即使在鼠标移动停止后也是如此
- Javascript move 元素与鼠标移动事件 60 FPS 请求动画帧
- 鼠标移动事件在火狐中不起作用
- 用于加载动态 JSON 数据的 JQuery 移动事件
- 在 IE11 中,不会为文本框触发指针移动事件
- 在jQuery或Javascript中是否有办法确定触摸移动事件的速度
- 如何从 jQuery 触发鼠标移动事件
- 科尔多瓦 - “触摸移动”事件不会立即触发
- 当绑定到多个元素时,Firefox 中的缓慢鼠标移动事件
- Backbone.View 的 setElement 不会移动事件侦听器
- 全屏模式下的 JavaScript 鼠标移动事件
- 需要触摸设备在覆盖另一个元素时保持触摸移动事件触发
- FabricJS:对象:移动事件不会在用户选择多个对象时触发
- 带有 JSON 数据的 JavaScript Kendo 调度程序仅移动事件一次
- 由谷歌地图绘制的矩形 绘图管理器不会触发鼠标移动事件