back to top

Gli eventi in Javascript

Perchรจ accada un qualcosa, sia nella vita che in programmazione, cโ€™รจ bisogno che "questo qualcosa" sia scatenato da un evento: nella vita, ad esempio, un incontro puรฒ far accadere qualcosa di piacevole (si spera!), in programmazione il click del mouse, la pressione di un pulsante, il resize della finestra, ecc. su possono scatenare una determinata routine.

In poche parole possiamo definire un evento Javascript come qualcosa che accade allโ€™interno del documento HTML che รจ il nostro contesto. Nella maggior parte dei casi a scatenare lโ€™evento รจ un comportamento ellโ€™utente (ad esempio un click su un dato elemento della pagina) altre volte, invece, รจ una situazione contingente che prescinde da una qualsivoglia azione dellโ€™utente (come ad esempio il caricamento della pagina).

Pubblicitร 

Javascript supporta moltissimi eventi che, con lโ€™evolversi del linguaggio, sono andati via via arricchendosi. In questa lezione vedremo gli eventi principali e piรน utilizzati e, soprattutto, vedremo come utilizzarli al fine di indirizzare il comportamento dei nostri script.

la sintassi degli eventi Javascript

Lโ€™evento si richiama direttamene allโ€™interno dellโ€™elemento HTML che lo riguarda, incorporando un attributo nel codice dellโ€™elemento stesso; la seguente รจ la sintassi:

<elemento attributoEvento="istruzione Javascript">

Vediamo un esempio pratico implementando un evento onclick su un pulsante:

<input type="button" value="Invia" onclick="alert('Hai cliccato!')">

Dato che lโ€™HTML non รจ un linguaggio case-sensitive (sensibile alle maiuscole ed alle minuscole) รจ indifferente scrivere onClick, onclick oppure ONCLICK, ma รจ necessario specificare i parametri (ad esempio il nome della funzione) con le giuste maiuscole e minuscole allโ€™interno di un evento (Javascript, infatti, รจ case-sensitive).

I principali eventi Javascript

Riporto qui sotto un elenco degli eventi e dei relativi gestori, con opportuna descrizione.

Gli eventi del tag <body>: onload, onunload, onresize e onscroll

Due eventi molto utilizzati in associazione al corpo della pagina sono onload e onunload attraverso i quali si intercetta, rispettivamente, lโ€™apertura e la chiusura della pagina. Vediamo qualche esempio:

<body onload="alert('Benvenuto!');">
<body onunload="alert('Torna a trovarci!');">

Da segnalare che lโ€™evento onload puรฒ essere efficacemente applicato anche al tag <img> per identificare il momento in cui la data immagine viene effettivamente scaricata dal browser.

Altri eventi associabili al corpo della pagina sono onresize e onscroll che servono, rispettivamente, ad intercettare il ridimensionamento della finestra e lo scrolling al suo interno. Questโ€™ultimo evento, oltre che al tag <body>, puรฒ essere associato anche ad altri elementi della pagina come, ad esempio, un DIV con overflow:scroll.

Gli eventi legati al mouse: onclick, onmouseover, onmouseout, ecc.

Lโ€™attivitร  del mouse รจ, solitamente, uno dei fattori piรน rilevanti allโ€™interno di buona parte delle applicazioni web. Un click su un elemento o il passaggio del cursore in una determinata porzione della pagina, infatti, sono tra gli eventi piรน comunemente utilizzati. I piรน importanti di questi sono:

  • onclick โ€“ click col tasto sinistro del mouse;
  • ondblclick โ€“ doppio click col tasto sinistro del mouse;
  • oncontextmenu โ€“ click col tasto destro del mouse;
  • onmouseover โ€“ ingresso del mouse su un dato elemento;
  • onmouseout โ€“ uscita del mouse da un dato elemento;
  • onmousemove โ€“ il cursore del mouse si sta muovendo sopra un dato elemento;

Questi eventi possono essere associati ad una molteplicitร  di tag HTML come, ad esempio, immagini, div, paragrafi, bottoni, ecc.

Vediamo di seguito alcuni esempi:

<img src="foto.jpg" onclick="alert('Hai cliccato la foto!')">
<img src="foto.jpg" ondblclick="alert('Hai fatto doppio click sulla foto!')">
<img src="foto.jpg" onmouseover="alert('Sei passato col mouse sulla foto!')">
<img src="foto.jpg" onmouseout="alert('Hai spostato il mouse fuori dalla foto!')">

Gli eventi legati alla tastiera: onkeypress, onkeydown e onkeyup

Un altra serie importante di eventi รจ scatenata dalla pressione, da parte degli utenti, dei tasti della tastiera del computer. Gli eventi rilevanti sono tre:

  • onkeypress โ€“ generica pressione di un tasto;
  • onkeydown โ€“ lโ€™evento si scatena mentre lโ€™utente sta premendo un tasto;
  • onkeyup โ€“ lโ€™evento si scatena quando lโ€™utente rilascia un tasto che ha premuto;

Vediamo un esempio:

<input type="text" onkeydown="alert('hai premuto un tasto!')">

Eventi legati ai form: onsubmit, onreset, onchange, ecc.

Una altra fitta serie di eventi Javascript รจ quella che riguarda i form ed i loro elementi.

I due eventi che riguardano il tag <form> sono onsubmit e onreset utilizzati, rispettivamente, per intercettare lโ€™invio ed il reset di un modulo HTML. Esempi:

<form onsubmit="alert('Hai inviato il modulo!')">
<form onreset="alert('Hai cancellato il modulo!')">

Gli eventi che riguardano i singoli elementi dei form (input, textarea, select, ecc.) sono, invece, molteplici. I piรน utilizzati sono:

  • onfocus โ€“ lโ€™elemento viene selezionato (e quindi attivato);
  • onblur โ€“ lโ€™elemento perde il focus (e quindi disattivato);
  • onchange โ€“ lโ€™elemento viene modificato nel contenuto;

Per fare un esempio: un campo input acquista il focus quando ci si clicca sopra per iniziare a scriverci dentro, viceversa lo perde quando si clicca su un altro elemento.

Per quanto riguarda lโ€™evento change questo รจ tipico delle selectbox, dei campi input e delle textarea e si verifica quando, a seguito dellโ€™azione dellโ€™utente, si ha un cambiamento del loro contenuto..

Altri eventi

Oltre a quelli menzionati, Javascript supporta molteplici altri eventi legati, ad esempio, al trascinamento di un elemento draggable o alla riproduzione di elementi multimediali. In questa sede, tuttavia, non ritengo opportuno affrontare tematiche ulteriori a quelle "di base" e pertanto rinvio il lettore a futuri ad ulteriori approfondimenti.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).
Articolo precedente
Articolo successivo