AJOUTER 'ADDEVENTLISTENER' SUR INTERNET EXPLORER

Signaler
Messages postés
631
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
-
Messages postés
1
Date d'inscription
lundi 1 février 2010
Statut
Membre
Dernière intervention
12 mai 2010
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/47916-ajouter-addeventlistener-sur-internet-explorer

Messages postés
1
Date d'inscription
lundi 1 février 2010
Statut
Membre
Dernière intervention
12 mai 2010

pas mal et très pratique pour les codeurs DOM,
juste 4 petites corrections

1 - Surcharger document.createElement()

var oldCreateElement=document.createElement;
//override

document.createElement= function(type)
{
//appel de l'ancienne méthode pour récupérer l'élement.
var obj = oldCreateElement(type)
//ajout des fonctions
obj.addEventListener = addEventListener;
obj.executeEvents = executeEvents;
return obj;
}

2 - modifier l'appel des callback car avec this[eventArrayName][eventIndex]() on perd la référence à this dans la fonction de callback : il faut écrire

//this[eventArrayName][eventIndex]();
this.tempEventFunction=this[eventArrayName][eventIndex];
this.tempEventFunction()

3 - Surcharger directement document.addEventListener car par mal de codes font le test sur la définition de addEventListener donc dans les dernières lignes du if il faut ajouter
document.addEventListener=addEventListener;
window.addEventListener=addEventListener;
document.executeEvents = executeEvents;
window.executeEvents = executeEvents;

4 - un petit changement cosmétique non nécessaire pour éviter surcharger plusieurs fois le tout, modif de la condition du if
if(using_ie && !(document.addEventListener))
Messages postés
100
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
13 juillet 2009

"y a pas que des utilisateurs de firefox faut penser aussi au utilisateur IE même si IE est en retard sur le dom"

Les utilisateurs d'IE, j'y pense, et puis j'oublie.

Bon, Firefox est connu. Les internautes font leurs choix, moi aussi.

Et c'est vrai qu'il n'y a pas que Firefox, il y a aussi Opera.
Messages postés
152
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
29 avril 2009

depression: y a pas que des utilisateurs de firefox faut penser aussi au utilisateur IE même si IE est en retard sur le dom ...

très bonne source :)

car le but c'est de rendre un site toujours compatible a tout navigateur
Messages postés
177
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
16 janvier 2009
1
Source élégante!
Pur s'abstenir de tester l'extraordinaire multitude de machines virtuelles javascript, il existe prototype: mature, élégant, plébisciter par tout le monde ( même google qui le propose en version compressé ).

Juste pour dire que la remarque de coucou47 n'est pas à suivre ( changer l'itération par compteur avec le for (.. in ..)).
Si tu fais ce genre d'itération, tu vas tomber sur des propriétés ajoutées par l'utilisateur exemple:
var o = [1,2,3,4];
o.maFonction = function(){ alert("bonjour");}
for( var p in o ){
alert(p + "=" + o[p]);
}
>Affiche:
1,2,3,4 et "function(){ alert("bonjour");}"

Alors quefor(var i 0, length o.length; i < length; i++){
alert(i + "=" + o[i]);
}
>Affiche:
1,2,3,4

Donc à éviter.
Cordialement,
Pierrick
Afficher les 12 commentaires