Come simulare l’evento Hover su dispositivi touchscreen

La progressiva diffusione di smartphone e tablet ha portato gli sviluppatori Web ad abbandonare modelli di navigazione tradizionali, poiché in presenza di touchscreen scompare l’evento Hover e ciascun tocco viene interpretato direttamente come click.
di Antonio Barba pubblicato il 30 Agosto 2013 nel canale WebSimulare l'evento Hover
Fino a qualche anno fa, la maggioranza dei siti Web proponeva un sistema di navigazione a più livelli organizzati ad albero, accessibili tramite un complesso sistema di menu a scomparsa.
Fig. 1 Esempio di menu multilivello, fonte:
www.bluxis.it
La comparsa e scomparsa dei vari livelli viene regolata dall’evento Hover generato dal browser quando il puntatore del mouse si trova sopra un blocco HTML. In caso di evento Hover vengono eseguite le regole CSS impostate come :hover e viene lanciata l’eventuale funzione JavaScript registrata sull’evento onMouseOver.
Con la progressiva diffusione di smartphone e altri device dotati di touchscreen, gli sviluppatori Web hanno via via abbandonato questo modello di navigazione, poichè in presenza di touchscreen scompare l’evento Hover e ciascun tocco viene interpretato direttamente come click.
Adeguare un sito ai nuovi modelli di navigazione spesso non è un lavoro banale, ma richiede un ripensamento generale dell’organizzazione dei contenuti del sito Web. Per questo motivo, in una iniziale fase di transizione, è possibile inserire una piccola modifica che consente di “simulare” l’evento hover sui dispositivi touch, lasciando inalterato il comportamento su quelli dotati di mouse.
La proprietà DOM chiamata aria-haspopup viene riconosciuta da Internet Explorer 10 e usata per attivare il meccanismo di simulazione dell’hover in questo modo:
<style> #hovermenu li ul { display: none; } #hovermenu li:hover ul{ display: block; } </style> <ul id="hovermenu"> <li><a href="/news/" aria-haspopup="true">News Categories</a> <ul> <li><a href="/news/top">Top Stories</a></li> <li><a href="/news/technology">Technology</a></li> <li><a href="/news/sports">Sports</a></li> <li><a href="/news/finance">Finance</a></li> <ul> </li> </ul> |
Quando tale codice viene eseguito su un dispositivo touch, il primo tocco viene interpretato come Hover, eseguendo quindi la regola CSS li:hover, mentre il secondo tocco (sullo stesso blocco) viene interpretato come click. Un tocco fuori dall’area provvede a disattivare l’hover.
Questa escamotage può essere usata per “mettere una pezza” in quei siti che attendono una fase di ristrutturazione, per garantire la corretta navigazione dei contenuti anche sui moderni PC e Tablet dotati di Windows 8 e Internet Explorer 10. La prossima versione di IE, invece, avrà il supporto integrato per la simulazione dell’evento hover.
Per ulteriori approfondimenti, si consiglia la lettura di questo documento
contente
le specifiche, le
definizioni ARIA e ovviamente le
raccomandazioni W3C
riguardo l’accessibilità dei siti Web.
7 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - infoappunto il mouse è sopra (over in inglese) all'elemento. onMouseHover mi pare sia una qualche funzione .Net
typo
@illidan2000:Hai ragione, ho fatto involontariamente un mix di .Net (Control.OnMouseHover) e JavaScript :/
Grazie per la segnalazione!
Antonio
Comunque, su IE11 funziona anche con il touch: credo che tenendo il dito premuto venga comunque lanciato l'evento onMouseOver
Purtroppo non so una fava di JS, altrimenti proverei di persona
Sì, sono passati un po' di anni ormai da UNIPA
Come dicevo nell'articolo: " La prossima versione di IE, invece, avrà il supporto integrato per la simulazione dell’evento hover."
Tra l'altro anche usando 2 principi in croce di ingegneria del software, l'utente medio, difficilmente riesce a seguire il flusso di un menu a tendina e sotto-tendina, spesso poi non viene neanche immesso un timeout al onMouseOut per cui appena il mouse esce dalla tendina sparisce tutto, e più che una semplice selezione diventa un gioco di bravura...
Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".