如何修复移动浏览器上 touchend 事件不触发的bug

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修复移动浏览器上 touchend 事件不触发的bug相关的知识,希望对你有一定的参考价值。

1、很简单, 只要在 touchstart 的时候调用下 event.preventDefault(), 即可让其他事件都正常被触发了!
2、如何修复移动浏览器上 touchend 事件不触发的bug:
https://www.douban.com/note/425950082/
参考技术A 直接升级浏览器最新的版本即可解决。

如何处理由滚动和点击列表项触发的“touchend”事件?

【中文标题】如何处理由滚动和点击列表项触发的“touchend”事件?【英文标题】:How can I handle a `touchend` event triggered by scrolling vs. tapping on a list item? 【发布时间】:2012-11-24 09:38:00 【问题描述】:

我有一个带有divs 的简单列表(在 iOS 上)。我在列表元素上使用touchend 事件来执行操作。我这样做是因为click 事件有大约 500 毫秒的延迟,这让 UI 感觉迟缓。

但是,当我滚动列表时,touchend 事件也会触发。有什么办法可以防止touchend 在我滚动列表时触发,或者检测它是否是由滚动列表引起的?欢迎使用 jQuery 解决方案。

【问题讨论】:

很难说出你真正想要什么。您确实意识到,为了滚动,您需要滑动屏幕,这将触发 touchstart/touchmove/touchend 事件,对吧? 正确,我知道这些事件被调用。如果只使用点击事件,它就可以工作,但会出现延迟问题(大约 500 毫秒,直到点击事件被触发)。 现在我很困惑。您正在开发什么类型的应用程序?它是桌面网络应用程序还是移动网站?最好提供更多细节,也许还有一些演示代码(一个 jsfiddle 就可以了)。 你能把你试过的代码贴在这里吗? 试过tap (jQuery) 事件? 【参考方案1】:

我也有同样的问题,我用 tappy 插件解决了:tappy plugin

只需使用“点击”事件。

【讨论】:

以上是关于如何修复移动浏览器上 touchend 事件不触发的bug的主要内容,如果未能解决你的问题,请参考以下文章

解决移动端页面滚动后不触发touchend事件

移动端android,长按事件时,touchend事件不触发的解决方法

移动端不触发touchend的解决方法以及后续影响问题的处理

移动端测试注意事项

移动端实现下拉刷新

移动端触发touchend后阻止click事件