2010-06-02 9 views
10

Meine Website verwendet im großen Umfang Image-Maps. Die Bilder sind von Seiten eines mittelalterlichen Manuskripts. Das mouseOver-Ereignis der AREA-Tags ist mit einem Tooltip versehen, der eine moderne typografische Transkription des alten Skripts für die Zeile anzeigt, über der die Maus schwebt.iPad Safari Zuordnung von Mausereignissen zum Berühren von Ereignissen in Image-Maps

Ich habe gerade meine Website auf dem iPad im Apple Store überprüft. Das iPad ist in vieler Hinsicht eine Freude zu benutzen, aber ich frage mich, ob Apple die Maus-Ereignisse auf die Finger-Touch-Ereignisse abbildet. Apple hatte wahrscheinlich einen guten Grund, die Dinge so zu machen, wie sie es taten, aber ihre Entscheidungen erscheinen mir nicht intuitiv und zu kompliziert.

Insbesondere der iPad Safari-Browser reagierte eindeutig auf fingerdown und fingerTap und auf unterschiedliche Weise. Wenn ich auf einen Bereich der Imagemap klopfte, wurde der Tooltip angezeigt, der mit dem Mouse-Over-Ereignis des AREA-Tags verbunden war, und blieb sichtbar, bis ich irgendwo anders tippte. Wenn ich meinen Finger auf einen Bereich der Bildkarte hielt, änderte der Bereich die Farbe. Wenn iPad Safari einen mouseOver-Eventhandler erkennt, führt es den mouseOver-Code beim Klicken | tap aus und verhindert scheinbar, dass sich das "click" -Ereignis ausbreitet. Wenn Sie also etwas mit dem click-Ereignis verdrahtet haben, funktioniert es nicht? Ist das richtig?

Aber was noch wichtiger ist, warum ist fingerDown nicht das iPad-Safari-Gegenstück für mouseOver? FingerDown scheint ein wahrscheinlicherer Kandidat als Tap zu sein, wenn das mouseOver-Ereignis zugeordnet wird. Ich würde die Dinge zu erwarten haben auf diese Weise abgebildet werden:

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

Wenn Apple fingerDown als Gegenstück zu Bewegen Sie den Cursor behandelt hatte, dann könnte der Tooltip auf FingerDown angezeigt werden und unsichtbar gemacht wieder auf fingerUp, die das Gegenstück wäre zu mouseOut.

Vielleicht könnte mich jemand über den Denkprozess aufklären, der Apple zu diesen Maus-to-touch-Event-Mappings geführt hat? Dank

Antwort

0

habe ich einige Informationen finden, die teilweise das oben beschriebene Verhalten erklärt:

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

Siehe Abschnitt 5, besonders.

Es scheint, dass die Berührung + Halten "Auswählen" des Imagemap-Bereichs ist. Der obige Link besagt, dass Benutzerauswahl deaktiviert werden kann, aber es wird nicht gesagt, was passiert, wenn die Touch + Hold-Geste für ein Element verwendet wird, bei dem Benutzerauswahl deaktiviert wurde. Es wäre großartig, wenn es unter diesen Umständen das Gegenstück zu mouseOver werden könnte.

10

Ich habe einige Untersuchungen speziell durchgeführt, wenn das iPad "mouseover" -Ereignisse im Gegensatz zu "click" -Ereignissen auslöst. Wenn der Benutzer irgendwo auf der Seite tippt, löst das iPad zuerst ein "mouseover" -Ereignis aus, als ob der Benutzer gerade einen Mauszeiger auf diese Stelle platziert hätte. Es wird auch ein "mouseout" -Ereignis für das letzte Element ausgelöst, das den Fokus hatte. Der Browser überprüft dann, soweit ich das beurteilen kann, ob irgendwelche Änderungen am DOM als Ergebnis eines "mouseover" -Ereignisrückrufs aufgetreten sind.

Wenn das DOM geändert wurde, löst der Browser kein "Klick" -Ereignis aus. Wenn der Benutzer ein zweites Mal auf dasselbe Element tippt, löst der Browser zwar ein "Klick" -Ereignis aus, löst aber kein weiteres "mouseover" -Ereignis aus.

Wenn der Benutzer zum ersten Mal auf ein Element tippt und sich das DOM nach dem "Mouseover" -Ereignis nicht geändert hat, löst der Browser ein "Klick" -Ereignis aus, ohne auf ein zweites Tippen zu warten .