Il metodo createEvent() in Javascript

Il metodo createEvent() in Javascript è stato utilizzato in passato per creare un evento che poteva poi essere innescato su elementi del DOM (Document Object Model).

CreateEvent()

Oggi, l'uso di createEvent() è stato superato da un approccio più diretto e semplice mediante il costruttore CustomEvent.

Tuttavia, è utile conoscere come funziona il vecchio metodo perché, pur essendo obsoleto, è ancora funzionante e può capitare di trovarlo nei vecchi script.

Un esempio pratico

Questo documento include uno script che genera un evento tramite createEvent()

<html>
<body>
<div id="mioDiv">Aspettando l'evento...</div>
<script>
// Creazione e inizializzazione dell'evento
var mioEvento = document.createEvent('CustomEvent');
mioEvento.initCustomEvent('eventoPersonalizzato', true, true, null);
// Aggiunta del listener per l'evento su 'mioDiv'
var elemento = document.getElementById('mioDiv');
elemento.addEventListener('eventoPersonalizzato', function(e) {
    elemento.textContent = "Evento personalizzato ricevuto!";
    });
// Innesco dell'evento
elemento.dispatchEvent(mioEvento);
</script>
</body>
</html>

In questo script creo un evento custom chiamato "eventoPersonalizzato" e lo innesco su un elemento della pagina, ad esempio un div con l'ID "mioDiv".

Per prima cosa creo un'istanza di un evento con createEvent().

var mioEvento = document.createEvent('CustomEvent');

Poi utilizzo initCustomEvent() per inizializzare l'evento con dettagli specifici.

Anche initCustomEvent è stato deprecato a favore di CustomEvent, ma lo utilizzo qui per coerenza con l'uso di createEvent().

mioEvento.initCustomEvent('eventoPersonalizzato', true, true, null);

Prima di innescare l'evento, devo assicurarmi che ci sia un gestore pronto a riceverlo.

Seleziono un elemento con id="mioDiv" e gli aggiungo un listener tramite addEventListener che reagirà al mio evento personalizzato.

var elemento = document.getElementById('mioDiv');
elemento.addEventListener('eventoPersonalizzato', function(e) {
    elemento.textContent = "Evento personalizzato ricevuto!";
    });

Ora che è tutto configurato, posso innescare l'evento sull'elemento con il metodo dispatchEvent().

elemento.dispatchEvent(mioEvento);

Quando l'evento viene innescato, il listener reagisce, mostrando un messaggio nella console e aggiornando il testo di mioDiv.

Sullo schermo viene visualizzato "Evento personalizzato ricevuto!" nel div in sostituzione del precedente contenuto "Aspettando l'evento..."

Evento personalizzato ricevuto!

Esempio 2

Lo stesso script precedente posso realizzarlo con il costruttore CustomEvent in una forma più moderna

<html>
<body>
<div id="mioDiv">Aspettando l'evento...</div>
<script>
// Creazione dell'evento utilizzando il costruttore Event
var mioEvento = new CustomEvent('eventoPersonalizzato', {
bubbles: true,
cancelable: true,
detail: null
});
// Aggiunta del listener per l'evento su 'mioDiv'
var elemento = document.getElementById('mioDiv');
elemento.addEventListener('eventoPersonalizzato', function(e) {
    elemento.textContent = "Evento personalizzato ricevuto!";
    });
// Innesco dell'evento
elemento.dispatchEvent(mioEvento);
</script>
</body>
</html>

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Document in Javascript

I metodi

Le proprietà