--- title: Création et déclenchement d'événements slug: orphaned/Web/Guide/Events/Creating_and_triggering_events tags: - API - Avancé - DOM - Guide - JavaScript - évènements translation_of: Web/Guide/Events/Creating_and_triggering_events original_slug: 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")}}