2010-06-02 100 views
10

我的網站廣泛使用圖像地圖。這些圖像是來自中世紀手稿的頁面。 AREA標籤的mouseOver事件附有一個工具提示,該工具提示爲鼠標懸停在其上的線條顯示古代腳本的現代印刷轉錄。iPad Safari將鼠標事件映射到圖像地圖中的觸摸事件

我剛剛在蘋果商店的iPad上查看了我的網站。 iPad在許多方面都是一種喜悅,然而,我想知道蘋果公司將鼠標事件映射到手指觸摸事件。蘋果公司或許有充足的理由像他們一樣做事,但他們的選擇似乎違反直覺,對我來說過於複雜。

具體來說,iPad的Safari瀏覽器顯然是響應fingerDown和fingerTap,並以不同的方式。當我點擊圖像地圖的一個區域時,顯示了連接到AREA標記的鼠標懸停事件的工具提示,並保持可見,直到我點擊其他地方。當我將手指放在圖像地圖的某個區域上時,該區域改變了顏色。因此,如果iPad Safari檢測到mouseOver事件處理程序,它會在click上點擊執行mouseOver代碼,並且顯然會阻止「click」事件傳播,因此如果您還有某些事件連接到click事件,則它不起作用?是對的嗎?

但更重要的是,爲什麼不fingerDown iPad的Safari對應mouseOver?當映射mouseOver事件時,FingerDown似乎比Tap更有可能。我本來期望事情以這種方式進行映射:

MouseClick : FingerTap (i.e. finger down and then immediately up) 
MouseOver : FingerDown (finger down and stays on the spot) 

如果蘋果曾治療過fingerDown爲對應於鼠標懸停,則提示可能在FingerDown顯示和fingerUp再次變得不可見,這將是對手到mouseOut。

也許有人可以啓發我關於蘋果公司引導這些特定的鼠標觸摸事件映射的思考過程嗎? 感謝

回答

0

我找到了一些資料,說可以部分解釋上述行爲:

http://developer.apple.com/safari/library/technotes/tn2010/tn2262/index.html

參見第5節,更是如此。

看起來touch + hold是「選擇」圖像映射區域。上面的鏈接指出,用戶選擇可以被禁用,但它沒有說明在用戶選擇被禁用的元素上使用觸摸+保持手勢時會發生什麼。在這種情況下,如果它可以成爲mouseOver的對手,那將是非常棒的。

10

我一直在做一些研究,特別是當iPad觸發「鼠標懸停」事件與「點擊」事件。當用戶點擊頁面上的任何位置時,iPad會首先觸發「鼠標懸停」事件,就好像用戶剛剛在該位置放置了鼠標光標。它還在最後一個焦點元素上觸發了「鼠標移動」事件。據我所知,瀏覽器檢查是否由於「鼠標懸停」事件回調而發生了DOM的任何更改。

如果DOM發生了變化,瀏覽器不會觸發「點擊」事件。如果用戶第二次點擊同一元素,瀏覽器會觸發「點擊」事件,但不會觸發另一個「鼠標懸停」事件。另一方面,如果在用戶第一次點擊元素並且在「mouseover」事件完成之後DOM沒有改變,則瀏覽器觸發「點擊」事件而不等待第二次點擊。