【问题标题】:Responsive website: why would touchstart be needed instead of click?响应式网站:为什么需要 touchstart 而不是 click?
【发布时间】:2015-07-16 16:40:36
【问题描述】:

我正在使用 ReactJS 开发一个复杂的单页应用程序。

这个页面最初是一个桌面浏览器应用程序,到处都有很多“onclick”侦听器,包括内部代码,还有我们无法轻易修改的外部插件/库。

但现在我们让它具有响应性,它可以在移动网站和 Cordova/Phonegap 应用程序中使用。

只是让 CSS 响应式会产生一个很好的结果,根本不需要引入 touchstart 事件。

当用户使用点击监听器触摸元素时,会调用监听器并且点击事件正确冒泡 (except on iOS but it can be solved)

所以,除非我尝试实现特定于触摸的复杂功能,例如通过触摸进行拖放,或特殊的“合成事件”,例如按下、捏合、点击、滑动(通常由特定于移动设备的库提供),否则我为什么需要以任何方式使用 touchstart?

例如我often see people trying to mix both click and touchstart根据设备能力在应用中。

但如果click 有效,我为什么需要关心touchstart

touchstart 有哪些尚未被click 处理的优势?

注意:这根本不是 300 毫秒的点击延迟,可以通过其他方式解决。

【问题讨论】:

    标签: javascript html mobile touch touchstart


    【解决方案1】:

    我们使用 touchstart/touchmove 的唯一原因是用于拖动事件,例如滚动/内滚动检测。

    例如,我们想检测无限滚动的滚动结束。

    在桌面上我们可以使用:

    $('.whatever').scroll({ blahhhh
    

    但在移动设备上我们使用:

    $('.whatever').on('touchmove', blahhhh
    

    另外你一定要结帐How to bind 'touchstart' and 'click' events but not respond to both?

    【讨论】:

    • 感谢很高兴知道。顺便说一句,你给我的链接已经包含在我的问题中,并没有真正回答:)
    • @SebastienLorber 哈哈,我什至没有注意到!我的错!
    猜你喜欢
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 2015-01-17
    • 2012-07-09
    • 2018-03-18
    相关资源
    最近更新 更多