【问题标题】:Ghostclicks in mobile apps移动应用程序中的 Ghostclicks
【发布时间】:2013-06-17 21:50:33
【问题描述】:

有很多关于鬼点击的材料/帖子,我正在努力更好地理解它。所以我理解它的方式,鬼点击的原因是 click 事件在触摸事件后约 300 毫秒被调度。 jQuery Mobile suggests 不使用他们的 vclick 事件,只要有机会更改手指位置下方的内容。

我的第一个问题是:这是否意味着只有在click 所针对的元素与最初触摸的元素不同时才会触发幽灵点击?所以,比如说,当一个按钮被触摸时,我写了一个数据库条目——没有别的。有没有鬼点击的机会?

如果是这种情况,这是否意味着如果我只使用 tap 事件而不使用任何click 事件,我可以完全防止鬼点击?

我的最后一个问题是我是否可以简单地告诉浏览器在使用 PhoneGap 时不要使用 300 毫秒延迟(这会立即解决问题),但我只是猜测我不能这样做,因为这可能很难- 编码到浏览器中。

【问题讨论】:

    标签: javascript jquery cordova jquery-mobile


    【解决方案1】:

    点击事件延迟 300 毫秒,以检测双击或胖手指错误。

    是的,您应该尽可能使用触摸事件。

    是的,有很多方法可以通过做一些 JS 来实现快速点击。例如:

    1. https://developers.google.com/mobile/articles/fast_buttons
    2. https://forum.jquery.com/topic/how-to-remove-the-300ms-delay-when-clicking-on-a-link-in-jquery-mobile
    3. http://labs.ft.com/2011/08/fastclick-native-like-tapping-for-touch-apps/

    您不必忍受 300 毫秒的延迟。

    【讨论】:

    • 对不起,我应该提到我知道这些解决方案。但是,我之前尝试过它们,但它们都不能可靠地工作(例如,在页面之间导航时)。那么你是说如果内容不改变使用触摸事件是安全的(因为延迟的click 事件不会再次触发它)?
    • 好吧,我刚刚在developers.google.com 网站上读到preventDefault() 负责处理这个问题(有道理……)。所以我想只要内容不改变就安全了。
    【解决方案2】:

    如果页面上所有可以点击的东西都安装了适当的vclick jQuery 事件处理程序,那么阻止幽灵点击的一种简单方法是在主体上创建一个touchend 事件处理程序并从中调用preventDefault

    $(document.body).on('touchend', null, function(e) {
      e.preventDefault();
    });
    

    请注意,这将禁用来自触摸的常规点击,因此您拥有的任何常规链接或表单输入都将停止工作,除非您向它们添加 vclick 处理程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 2017-05-23
      • 2014-10-25
      相关资源
      最近更新 更多