监听touchend有时会触发移动点击事件

listening for touchend sometimes fires click event mobile

本文关键字:移动 事件 touchend 监听      更新时间:2023-09-26

我有一个用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技巧)