【问题标题】:bypassing mouseover events for iOS绕过iOS的鼠标悬停事件
【发布时间】:2011-05-03 12:10:11
【问题描述】:

我们的网站利用 overLIB 库在鼠标悬停时显示有关可点击链接的“更多信息”。结果是在 iOS 设备上,第一次单击将导致鼠标悬停文本出现,而第二次将激活链接。

为非 iOS 浏览器保留鼠标悬停文本,而为使用 iOS 的用户绕过它的最简单方法是什么,以便在第一次点击时激活链接?

【问题讨论】:

    标签: javascript iphone ios mouseover


    【解决方案1】:

    如果您想要一个简单的解决方案,您可以使用如下所述的 Modernizr:What's the best way to detect a 'touch screen' device using JavaScript?。然后,您可以将您的 overLIB 事件绑定到非触摸类等。这样,您可以处理所有触摸设备用户,而不仅仅是 iOS 用户。当然,如果你只想要 iOS 用户,你可以随时使用 UA 嗅探(http://www.quirksmode.org/js/detect.html),虽然不推荐。

    但是,您仍然会遇到为不需要的用户加载 overLIB 脚本的问题。我认为避免这种情况的最佳方法取决于你的堆栈的其余部分。

    要考虑的另一件事是悬停提示的目的。如果它们在您的桌面站点上很有用,可以帮助用户了解他们要去的地方而无需进行点击投资,那么为什么它们在您的触摸设备站点上没有用呢?我知道悬停在触摸设备上很笨拙,但我认为它们很常见,因为目前还没有其他选择。我敢打赌,触摸设备用户理解流程。唯一想到的例子是Seamless.com - 当您从餐厅选择菜单项时,您会看到“悬停”描述,然后需要再次单击才能选择该项目。


    我意识到这是一个老问题 - 为 Google 员工解答。 :)

    【讨论】:

      【解决方案2】:

      另一个solution 是使用.mousemove() 而不是.mouseover()

      iOS 忽略 .mousemove() 事件并在第一次触摸时触发点击。

      【讨论】:

      猜你喜欢
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2012-10-12
      • 1970-01-01
      • 2011-04-20
      • 2016-08-08
      • 1970-01-01
      相关资源
      最近更新 更多