Gestione degli eventi in javascript: una soluzione "cross browser"
Quando si realizza una applicazione web basandosi su JQuery, gli eventi vengono gestiti utilizzando i metodi
bind()
,
unbind()
,
on()
e
off()
, che permettono di collegarli e scollegarli agevolmente dagli elementi del
DOM
.
In quei rari casi in cui non si può/vuole utilizzare JQuery nasce la necessità di gestire gli eventi con del codice hand-made .
A questo punto sorgono problemi riguardanti la compatibilità: mentre la maggior parte dei browsers utilizza per collegare gli eventi i metodi addEventListener() and removeEventListener() , Internet Explorer 8 (ovviamente :-P) e successivi utilizzano invece attachEvent() e detachEvent() .
La soluzione migliore è quindi scrivere un gestore degli eventi che permetta una compatibilità cross-browser :
L’utilizzo è semplice: EventHandler.bind(ELEMENTO, EVENTO, FUNZIONE) per effettuare l’attach di un evento, EventHandler.unbind(ELEMENTO, EVENTO, FUNZIONE) per il detach e EventHandler.stop(EVENTO) per fermare la propagazione dell’evento.
| *via Cross Browser Event Handling in JavaScript | Anuj Gakhar* |