2010-11-01 205 views
2

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

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

回答

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员工。 :)

0

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

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

+0

这是一个javascript问题,为什么不用有效的javascript API使用来回答。提到jQuery时没有提到。 – 2013-01-12 11:53:14

+0

对不起,对于这件事来说是新鲜事,只是想帮忙。 – 2013-01-12 12:11:40

+0

iOS不会再忽略mousemove(不知道什么时候改变了),这里记录下https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html – Rwky 2015-10-22 15:18:52