2010-11-01 117 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