JavaScript - Eventi della finestra/documento

Ciao a tutti, aspiranti programmatori! Oggi esploreremo il mondo emozionante degli eventi JavaScript, concentrandoci in particolare sugli eventi della finestra e del documento. Come il tuo amico insegnante di informatica del quartiere, sono qui per guidarti in questo viaggio con tanti esempi e spiegazioni. Allora, prenditi la tua bevanda preferita, mettiti comodo e iniziamo!

JavaScript - Window/Document Events

Eventi della finestra

Gli eventi della finestra sono azioni che si verificano in relazione alla finestra del browser stessa. Questi eventi possono essere estremamente utili per creare applicazioni web dinamiche e reattive. Esploriamo alcuni degli eventi della finestra più comuni:

1. load

L'evento load viene scatenato quando l'intera pagina, inclusi tutti i risorse dipendenti come fogli di stile e immagini, ha finito di caricarsi. Questo viene spesso utilizzato per assicurarsi che tutti gli elementi siano disponibili prima di eseguire script.

window.addEventListener('load', function() {
console.log("Pagina completamente caricata!");
});

In questo esempio, stiamo aggiungendo un listener di eventi all'oggetto window. Quando si verifica l'evento 'load', la nostra funzione verrà eseguita, registrando un messaggio nella console.

2. resize

L'evento resize viene scatenato ogni volta che la finestra del browser viene ridimensionata. Questo può essere utile per adattare i layout o ricalcolare le dimensioni.

window.addEventListener('resize', function() {
console.log("Finestra ridimensionata a: " + window.innerWidth + "x" + window.innerHeight);
});

Qui, stiamo registrando le nuove dimensioni della finestra ogni volta che viene ridimensionata. Questo potrebbe essere utile per gli adattamenti del design reattivo.

3. scroll

L'evento scroll viene scatenato quando l'utente scorre nella finestra. Questo può essere utilizzato per implementare la navigazione infinita o mostrare/nascondere elementi in base alla posizione di scorrimento.

window.addEventListener('scroll', function() {
let scrollPosition = window.scrollY;
console.log("Scorriamo alla posizione: " + scrollPosition);

if (scrollPosition > 300) {
document.getElementById('backToTop').style.display = 'block';
} else {
document.getElementById('backToTop').style.display = 'none';
}
});

In questo esempio, stiamo mostrando un pulsante 'Torna in alto' quando l'utente ha scorbito più di 300 pixel verso il basso della pagina.

4. unload

L'evento unload viene scatenato quando l'utente naviga lontano dalla pagina. Questo può essere utilizzato per compiti di pulizia o per avvisare l'utente prima di lasciare.

window.addEventListener('unload', function(event) {
event.preventDefault();
event.returnValue = '';
});

Questo codice avvierà una conferma con un dialogo quando l'utente tenta di lasciare la pagina. Ricorda di usarlo con parsimonia, poiché può essere fastidioso per gli utenti!

Eventi del documento

Gli eventi del documento sono correlati al documento HTML stesso. Questi eventi ci permettono di interagire con il contenuto della pagina in vari modi. Esploriamo alcuni eventi chiave del documento:

1. DOMContentLoaded

L'evento DOMContentLoaded viene scatenato quando il documento HTML iniziale è stato completamente caricato e analizzato, senza aspettare che le risorse esterne finiscano di caricarsi.

document.addEventListener('DOMContentLoaded', function() {
console.log("DOM pronto!");
document.getElementById('myButton').addEventListener('click', function() {
alert("Pulsante cliccato!");
});
});

Questo evento è spesso preferito rispetto a window.load perché non aspetta che le immagini e altre risorse finiscano di caricarsi, permettendo un'esecuzione più rapida degli script.

2. click

L'evento click viene scatenato quando un elemento viene cliccato. Questo è uno degli eventi più comuni con cui lavorerai.

document.getElementById('myButton').addEventListener('click', function(event) {
console.log("Pulsante cliccato alle coordinate: " + event.clientX + ", " + event.clientY);
event.target.style.backgroundColor = 'red';
});

In questo esempio, stiamo registrando le coordinate del clic e cambiando il colore del pulsante quando viene cliccato.

3. keydown e keyup

Questi eventi vengono scatenati quando un tasto viene premuto (keydown) o rilasciato (keyup).

document.addEventListener('keydown', function(event) {
console.log("Tasto premuto: " + event.key);
if (event.key === 'Enter') {
document.getElementById('submitButton').click();
}
});

Questo codice registra ogni pressione di tasto e simula un clic su un pulsante di invio quando si preme il tasto Invio.

4. mouseover e mouseout

Questi eventi vengono scatenati quando il puntatore del mouse entra (mouseover) o esce (mouseout) da un elemento.

let hoverElement = document.getElementById('hoverMe');

hoverElement.addEventListener('mouseover', function() {
this.style.backgroundColor = 'yellow';
});

hoverElement.addEventListener('mouseout', function() {
this.style.backgroundColor = '';
});

Questo crea un semplice effetto di passaggio del mouse, cambiando il colore di sfondo di un elemento quando il mouse è sopra di esso.

Tabella dei metodi degli eventi

Ecco una tabella utile che riassume i metodi che abbiamo discusso:

Evento Descrizione Esempio
load Scatenato quando la pagina è completamente caricata window.addEventListener('load', function() {...})
resize Scatenato quando la finestra è ridimensionata window.addEventListener('resize', function() {...})
scroll Scatenato quando la finestra è scorsa window.addEventListener('scroll', function() {...})
unload Scatenato quando si naviga lontano dalla pagina window.addEventListener('unload', function(event) {...})
DOMContentLoaded Scatenato quando il DOM è pronto document.addEventListener('DOMContentLoaded', function() {...})
click Scatenato quando un elemento è cliccato element.addEventListener('click', function(event) {...})
keydown Scatenato quando un tasto è premuto document.addEventListener('keydown', function(event) {...})
keyup Scatenato quando un tasto è rilasciato document.addEventListener('keyup', function(event) {...})
mouseover Scatenato quando il mouse entra nell'elemento element.addEventListener('mouseover', function() {...})
mouseout Scatenato quando il mouse esce dall'elemento element.addEventListener('mouseout', function() {...})

Ecco qui, ragazzi! Abbiamo coperto le basi degli eventi della finestra e del documento in JavaScript. Ricorda, la pratica rende perfetti, quindi non aver paura di sperimentare con questi eventi nei tuoi progetti. Prima di sapere, sarai creare pagine web interattive e dinamiche come un professionista!

Buon coding, e possa i tuoi eventi sempre scoccare come previsto!

Credits: Image by storyset