En fait, ce n'est pas si difficile - il n'y a pas tant de définitions d'événements, seulement trois versions. La première est la bonne (addEventListener
), ensuite il y a la méthode IE (attachEvent
) et enfin la méthode de compatibilité pour les anciens navigateurs (element.onevent = fonction
)
Une solution de gestion d'événements complète ressemblerait à ceci :
setEvent = function(element, eventName, handler){
if('addEventListener' in element){
//W3
element.addEventListener(eventName,handler,false);
}else if('attachEvent' in elm){
//IE
elm.attachEvent('on'+eventName,handler)
}else{
// compatibilité
elm['on'+eventName] = handler;
}
}
et pour effacer les événements :
clearEvent = function(element, eventName, handler){
if('removeEventListener' in element){
//W3
element.removeEventListener(eventName,handler,false);
}else if('detachEvent' in elm){
//IE
elm.detachEvent('on'+eventName,handler)
}else{
// compatibilité
elm['on'+eventName] = null;
}
}
et un exemple:
setEvent(document, "click", function(){alert('hello world!');});
clearEvent(document, "click", function(){alert('hello world!');});
Ce n'est pas vraiment un exemple complet cependant, car le gestionnaire de compatibilité écrase toujours les événements précédents (il ne les ajoute pas, il les remplace), donc vous voudriez probablement vérifier si un gestionnaire est déjà défini, puis le sauvegarder dans une variable temporaire et l'exécuter à l'intérieur de la fonction gestionnaire d'événements.
0 votes
Vous pouvez construire le vôtre. C'est très simple, pur JS et ne nécessite pas de DOM - consultez ma réponse ici: stackoverflow.com/questions/31110706/…