Eventi in JavaScript: onclick, addEventListener e oggetto Event

Eventi in JavaScript: onclick, addEventListener e oggetto Event

Quando usi il browser, questo registra diversi tipi di eventi: per esempio quando l’utente clicca su un pulsante, invia un modulo o passa sopra un elemento. È il modo in cui il browser ti dice che l’utente ha appena compiuto un’azione. Il tuo script può allora rispondere a questi eventi. Spesso lo fa aggiornando il contenuto della pagina tramite l’oggetto document, il che rende la pagina più interattiva. In questo capitolo ti elenco i vari tipi di evento su cui puoi lavorare per rendere le tue pagine un po’ più interattive.

Questo articolo non è completo e può essere soggetto ad aggiornamenti

Assegnare una funzione a un evento


javascript
var bouton = document.getElementById('click');

function MonAlert() {
  alert('hello world');
}

bouton.onclick = MonAlert;

Tutti i browser moderni capiscono questo modo di assegnare una funzione a un evento, ma puoi collegare una sola funzione per evento e non puoi passarle parametri: le parentesi vanno tolte, altrimenti il codice parte subito.

Svantaggio

Se vuoi assegnare più funzioni allo stesso evento, quella precedente viene sovrascritta dalla nuova.

javascript
var bouton = document.getElementById('click');

function MonAlert() {
  alert('hello world!');
}

function AlertTOTO() {
  alert('Toto!')
}

bouton.onclick = MonAlert;
bouton.onclick = AlertTOTO;

Risultato: comparirà il messaggio Toto!.

Event Listener


Gli event listener sono un metodo più moderno, che permette di assegnare a uno stesso evento più funzioni alla volta.

javascript
var bouton = document.getElementById('click');

function MonAlert() {
  alert('hello world!');
}

function AlertTOTO() {
  alert('Toto!');
}

bouton.addEventListener('click', MonAlert);
bouton.addEventListener('click', AlertTOTO);

Il metodo addEventlistener() accetta tre parametri:
element.addEventlistener('evenement', NomDeFonction, Boolean);

  1. evenement: il nome dell’evento che vuoi ascoltare ( blur, click, … );
  2. Il codice da eseguire: può essere una funzione dichiarata prima oppure una funzione anonima.
  3. Un boolean che indica la fase di propagazione dell’evento, il valore predefinito è false.

Svantaggio

Questo metodo non è supportato dai browser più vecchi.

Usare i parametri


Abbiamo visto che non si possono mettere le parentesi quando si assegna una funzione a un evento. Per riuscirci si crea una funzione anonima da assegnare all’evento e, dentro di essa, si chiamano le proprie funzioni con i parametri.

javascript
function MonAlert(message) {
  alert(message);
}

bouton.addEventListener('click', function() {
    MonAlert('Mon message qui s'affiche!');
});

L’oggetto Event


Quando si verifica un evento esiste un oggetto evento che contiene informazioni sull’evento e sull’elemento su cui si è verificato.

javascript
var bouton = document.getElementById('click');

function MonAlert(e) {
  console.log(e.target);
}

bouton.onclick = MonAlert;

Con un event listener e dei parametri

javascript
var bouton = document.getElementById('click');

function MonAlert(e, message) {
    console.log(e.target);
    console.log(message);
}

bouton.addEventListener('click', function(e){
    MonAlert(e, "hello world!");
});

Proprietà

Proprietà Descrizione
target L’elemento che ha scatenato l’evento
type L’evento che è stato scatenato

Metodo

Metodo Descrizione
preventDefault() Annulla il comportamento predefinito di un evento (se è annullabile)
stopPropagation() Ferma la propagazione dell’evento.

Elenco degli eventi

Ecco un piccolo elenco, non esaustivo, degli eventi che si incontrano più spesso.

Browser

Evento Descrizione
load Si scatena quando il browser ha finito di caricare. Può scattare anche sui nodi di altri elementi caricati, come immagini, script od oggetti.
unload è il contrario dell’evento load: si scatena quando si cambia pagina.
resize si scatena quando l’utente cambia la dimensione della finestra del browser.
scroll si scatena quando l’utente scorre la pagina o un elemento.
error error si scatena quando il browser incontra un errore JavaScript.

Mouse

Evento Descrizione
click Si scatena quando l’utente clicca su un elemento
dblclick Come click, ma quando l’utente fa un doppio clic rapido.
mouseup Si scatena quando l’utente tiene premuto un pulsante del mouse.
mousedown Si scatena quando l’utente rilascia un pulsante del mouse.
mousemove Si scatena quando il cursore si sposta.
mouseover si scatena quando il cursore passa sopra un elemento.
mouseout si scatena quando il cursore esce da un elemento su cui stava passando, oppure entra in un suo elemento figlio.

Tastiera

Evento Descrizione
input Si scatena quando cambia il valore di un elemento <input> o <textarea>.
keydown Si scatena quando l’utente preme un tasto della tastiera. Se tiene il tasto premuto, l’evento continua a scattare ripetutamente.
keypress Si scatena quando l’utente preme un tasto che porta alla comparsa di un carattere sullo schermo. Per esempio non scatta quando l’utente preme i tasti freccia, mentre keydown lo fa. Se l’utente tiene il tasto premuto, l’evento continua a scattare ripetutamente come per keydown.
keyup Si scatena quando l’utente rilascia un tasto della tastiera. Gli eventi keydown e keypress scattano prima che il carattere compaia sullo schermo, mentre keyup scatta dopo la sua comparsa.

Sapere quale tasto è stato premuto

Con l’oggetto Event puoi sapere quale tasto è stato premuto usando e.keycode, che restituisce il codice ASCII del tasto della tastiera.

Moduli

Evento Descrizione
submit Si scatena quando l’utente preme il pulsante di invio del modulo.
change Si scatena quando cambia lo stato di alcuni elementi di modulo. ( radio, checkbox e select )

JavaScript

Damien Flandrin Sviluppatore web dal 2010, creatore di Gekkode e di Email Impact. Ogni articolo è testato su un progetto reale prima della pubblicazione. Contatti
Newsletter

I nuovi test, tutorial e progetti, via e-mail.

Test riproducibili, codice versionato, risultati datati. Mai spam.