绕过iOS的鼠标悬停事件

时间:2010-11-01 16:03:22

标签: javascript iphone ios mouseover

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

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

2 个答案:

答案 0 :(得分:2)

如果您想要一个简单的解决方案,您可以使用类似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员工。 :)

答案 1 :(得分:0)

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

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