--- title: Création et déclenchement d'événements slug: Web/Guide/DOM/Events/Creating_and_triggering_events tags: - API - Avancé - DOM - Guide - JavaScript - évènements translation_of: Web/Guide/Events/Creating_and_triggering_events ---
Cet article montre comment créer et distribuer des événements DOM. De tels événements sont généralement appelés événements synthétiques afin de les distinguer des événements levés par le navigateur lui-même.
Les événements peuvent être créés avec le constructeur Event
de cette manière :
var event = new Event('build'); //Ecouter l'événement. elem.addEventListener('build', function (e) { ... }, false); //distribuer l'événement. elem.dispatchEvent(event);
Ce constructeur est pris en charge par la plupart des navigateurs modernes (Internet Explorer étant l'exception). Pour une approche plus verbeuse (qui fonctionne avec Internet Explorer), voir l'ancienne approche ci-dessous.
Pour ajouter d'autres données à l'objet événement, il existe l'interface CustomEvent. Dans cette interface, la propriété detail
peut être utilisée pour transmettre des données personnalisées. Par exemple, l'événement peut être créé de la manière suivante :
var event = new CustomEvent('build', { 'detail': elem.dataset.time });
Cela permet à la fonction qui capture l'événement (la fonction de rappel) d'accéder aux données supplémentaires :
function eventHandler(e) { log('The time is: ' + e.detail); }
L'ancienne manière de créer des événements utilise des API inspirées par Java. Le code suivant en montre un exemple :
// Crée l'événement var event = document.createEvent('Event'); // Nomme l'événement 'build'. event.initEvent('build', true, true); // Écoute l'événement. elem.addEventListener('build', function (e) { // e.target correspond à elem }, false); // target peut être n'importe quel Element ou autre EventTarget. elem.dispatchEvent(event);
Cet exemple démontre la simulation d'un clic (programmation générant un événement de clic) sur une case à cocher en utilisant des méthodes DOM. Voir l'exemple en action.
function simulateClick() { var event = new MouseEvent('click', { 'view': window, 'bubbles': true, 'cancelable': true }); var cb = document.getElementById('checkbox'); var canceled = !cb.dispatchEvent(event); if (canceled) { //Un gestionnaire appelé preventDefault. alert("canceled"); } else { //Aucun gestionnaires appelé preventDefault. alert("not canceled"); } }
{{Compat("api.Event.Event")}}