2010-06-02 16 views
10

Il mio sito Web fa ampio uso di mappe di immagini. Le immagini sono di pagine di un manoscritto medievale. L'evento mouseOver dei tag AREA ha un tooltip ad esso allegato, che mostra una trascrizione tipografica moderna dell'antico script per la linea su cui il mouse sta passando il mouse.iPad Safari per mappare gli eventi del mouse per toccare gli eventi nelle mappe di immagini

Ho appena controllato il mio sito Web sull'iPad presso l'Apple Store. L'iPad è sotto molti aspetti una gioia da usare, tuttavia, mi chiedo sulla mappatura di Apple degli eventi mouse per gli eventi finger-touch. Probabilmente Apple aveva una buona ragione per fare le cose come facevano loro, ma le loro scelte sembrano controintuitive e troppo complicate per me.

In particolare, il browser iPad Safari rispondeva chiaramente sia a fingerDown che a fingerTap e in modi diversi. Quando ho toccato un'area della mappa immagine, il tooltip collegato all'evento mouse-over del tag AREA è stato visualizzato ed è rimasto visibile fino a quando non ho toccato da qualche altra parte. Quando ho tenuto il dito premuto su un'area della mappa immagine, l'area ha cambiato colore. Quindi, se iPad Safari rileva un eventener di mouseOver, esegue il codice mouseOver sul click | tap e apparentemente impedisce la propagazione dell'evento "click", in modo che se anche tu abbia qualcosa collegato all'evento click, non funziona? È giusto?

Ma, ancora più importante, perché non si esegue il fingerown della controparte di iPad-Safari per mouseOver? FingerDown sembra un candidato più probabile di Toccare quando mappare l'evento mouseOver. cose che mi sarei aspettato di essere mappati in questo modo:

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

Se Apple aveva trattato fingerDown come la controparte a mouseOver, poi il tooltip può essere visualizzato su FingerDown e reso di nuovo invisibile sul fingerUp, che sarebbe la controparte per mouseOut.

Forse qualcuno potrebbe illuminarmi sul processo di pensiero che ha portato Apple a questi particolari mapping di eventi mouse-to-touch? Grazie

risposta

0

ho trovato alcune informazioni che spiega in parte il comportamento descritto sopra:

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

Vedere la sezione 5, in particolare.

Sembra che il tocco + premuto "selezioni" l'area della mappa immagine. Il link sopra dice che la selezione utente può essere disabilitata, ma non dice cosa succede quando il gesto touch + hold viene usato su un elemento dove la selezione utente è stata disabilitata. Sarebbe bello se potesse diventare la controparte di mouseOver in tali circostanze.

10

Ho fatto qualche ricerca su specificamente quando l'iPad spara gli eventi "mouseover" rispetto agli eventi "click". Quando l'utente tocca ovunque sulla pagina, l'iPad lancia un evento "mouseover" come se l'utente avesse appena posizionato un cursore del mouse in quel punto. Spara anche un evento "mouseout" sull'ultimo elemento focalizzato. Quindi, per quanto posso dire, il browser controlla se si sono verificate eventuali modifiche al DOM come risultato del callback dell'evento "mouseover".

Se è stata apportata una modifica al DOM, il browser non attiva un evento di "clic". Se l'utente tocca lo stesso elemento una seconda volta, il browser genera un evento "clic" ma non attiva un altro evento "mouseover".

D'altra parte, se dopo che l'utente ha toccato un elemento per la prima volta e il DOM non è stato modificato dopo il completamento dell'evento "mouseover", il browser attiva un evento di "clic" senza attendere un secondo tocco .

Problemi correlati