XtremDuke
Messages postés626Date d'inscriptionsamedi 28 septembre 2002StatutMembreDernière intervention18 mai 2009
-
11 sept. 2008 à 17:15
hdescure
Messages postés1Date d'inscriptionlundi 1 février 2010StatutMembreDernière intervention12 mai 2010
-
12 mai 2010 à 12:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
hdescure
Messages postés1Date d'inscriptionlundi 1 février 2010StatutMembreDernière intervention12 mai 2010 12 mai 2010 à 12:47
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
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))
cs_depression
Messages postés100Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention13 juillet 2009 13 sept. 2008 à 18:15
"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.
djmmix
Messages postés152Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention29 avril 2009 13 sept. 2008 à 12:05
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
the_wwt
Messages postés177Date d'inscriptionjeudi 5 octobre 2006StatutMembreDernière intervention16 janvier 20091 12 sept. 2008 à 13:15
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
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 12 sept. 2008 à 13:01
xtremduke++ pour l'ensemble de ses réponses
attachEvent ou addEventListener
dans ta "fonction générale" et c'est tout.
en 3 lignes quoi.
et rien à tester, à faire... pour les utilisateurs
je ne vais pas paul et mickey sur ces stupidités
de soit disant normes !
ce ne sont que des recommandations ( avec 20 ans
de retard sur l'existant pour ne critiquer que cet aspect ),
ni des normes ni des standards... et chaque constructeur
n'en respecte que ce qui l'arrange ( les cas des navigateurs
n'est presque qu' anecdotique dans ces recommandations )
( certes aujourd'hui il parait que c'est IE qui les
respecte le moins )
et je m'arrête ici aussi....
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 12 sept. 2008 à 09:11
:) sympa comme source
juste une petite remarque :
for(eventIndex=0;eventIndex<this[eventArrayName].length;eventIndex++)
=>
for(eventIndex in this[eventArrayName])
XtremDuke
Messages postés626Date d'inscriptionsamedi 28 septembre 2002StatutMembreDernière intervention18 mai 20094 11 sept. 2008 à 21:34
Mdr ok je vai m'arreter là...
cs_depression
Messages postés100Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention13 juillet 2009 11 sept. 2008 à 18:37
"Un site correctement développé a le même rendu sous IE que sous les autres navigateurs."
@XTREMDUKE:
Certainement pas! Il faut d'abord dev le code correctement, aux normes du W3C, puis, perdre du temps à l'adapter pour IE...
li9
Messages postés57Date d'inscriptionlundi 23 février 2004StatutMembreDernière intervention11 septembre 20081 11 sept. 2008 à 18:12
Hello!
Merci pour vos commentaires :)
Alors , XtremDuke, le bute de cette source est justement d'éviter attachEvent(). parce que vérifier partout dans le code si on est sur IE ou FF ou autre c est plutot agaçant :p .Et en plus on respecte les normes.
Depression : ton pseudo est flippant lol.
Je suis d accord, ça n'ets pas mon job de faire ca,
mais si on doit attendre que IE respecte le DOM, on aura encore des if(ie) ... dans 10 ans :)
Ce sont des branquignoles je suis d'ac. ^^
Vous trouvez pas ça sympa de faire directement :
var obj = document.getElementById("bla");
obj.addEventListener("keydown",function(){},true);
peut importe le navigateur ?
En tout cas merci encore pour vos commentaires!
++
XtremDuke
Messages postés626Date d'inscriptionsamedi 28 septembre 2002StatutMembreDernière intervention18 mai 20094 11 sept. 2008 à 18:01
"et qu'il ne faut pas s'étonner si le rendu est minable."
Un site correctement développé a le même rendu sous IE que sous les autres navigateurs.
cs_depression
Messages postés100Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention13 juillet 2009 11 sept. 2008 à 17:50
addEventListener n'est pas dans IE7?
Les branquignoles...
Bon, tu as fais une bonne source, c'est une bonne idée, même si je pense que ce n'était pas à toi de faire ce travail, mais aux développeurs du navigateur IE.
Pour ma part, j'utilise Event.Observe() du framework Prototype, et je suis moins embêté par les caprices d'IE, même si j'ai tendance à me moquer du rendu pour mon site perso sur ce navigateur comme de ma première gastro. Je mets juste une note sur le site comme quoi IE est (franchement) obsolète, et qu'il ne faut pas s'étonner si le rendu est minable.
Quoi qu'il en soit, bon boulot!
XtremDuke
Messages postés626Date d'inscriptionsamedi 28 septembre 2002StatutMembreDernière intervention18 mai 20094 11 sept. 2008 à 17:15
Ca ne serait pas plus simple d'utiliser attachEvent() ?
12 mai 2010 à 12:47
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))
13 sept. 2008 à 18:15
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.
13 sept. 2008 à 12:05
très bonne source :)
car le but c'est de rendre un site toujours compatible a tout navigateur
12 sept. 2008 à 13:15
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
12 sept. 2008 à 13:01
attachEvent ou addEventListener
dans ta "fonction générale" et c'est tout.
en 3 lignes quoi.
et rien à tester, à faire... pour les utilisateurs
je ne vais pas paul et mickey sur ces stupidités
de soit disant normes !
ce ne sont que des recommandations ( avec 20 ans
de retard sur l'existant pour ne critiquer que cet aspect ),
ni des normes ni des standards... et chaque constructeur
n'en respecte que ce qui l'arrange ( les cas des navigateurs
n'est presque qu' anecdotique dans ces recommandations )
( certes aujourd'hui il parait que c'est IE qui les
respecte le moins )
et je m'arrête ici aussi....
12 sept. 2008 à 09:11
juste une petite remarque :
for(eventIndex=0;eventIndex<this[eventArrayName].length;eventIndex++)
=>
for(eventIndex in this[eventArrayName])
11 sept. 2008 à 21:34
11 sept. 2008 à 18:37
@XTREMDUKE:
Certainement pas! Il faut d'abord dev le code correctement, aux normes du W3C, puis, perdre du temps à l'adapter pour IE...
11 sept. 2008 à 18:12
Merci pour vos commentaires :)
Alors , XtremDuke, le bute de cette source est justement d'éviter attachEvent(). parce que vérifier partout dans le code si on est sur IE ou FF ou autre c est plutot agaçant :p .Et en plus on respecte les normes.
Depression : ton pseudo est flippant lol.
Je suis d accord, ça n'ets pas mon job de faire ca,
mais si on doit attendre que IE respecte le DOM, on aura encore des if(ie) ... dans 10 ans :)
Ce sont des branquignoles je suis d'ac. ^^
Vous trouvez pas ça sympa de faire directement :
var obj = document.getElementById("bla");
obj.addEventListener("keydown",function(){},true);
peut importe le navigateur ?
En tout cas merci encore pour vos commentaires!
++
11 sept. 2008 à 18:01
Un site correctement développé a le même rendu sous IE que sous les autres navigateurs.
11 sept. 2008 à 17:50
Les branquignoles...
Bon, tu as fais une bonne source, c'est une bonne idée, même si je pense que ce n'était pas à toi de faire ce travail, mais aux développeurs du navigateur IE.
Pour ma part, j'utilise Event.Observe() du framework Prototype, et je suis moins embêté par les caprices d'IE, même si j'ai tendance à me moquer du rendu pour mon site perso sur ce navigateur comme de ma première gastro. Je mets juste une note sur le site comme quoi IE est (franchement) obsolète, et qu'il ne faut pas s'étonner si le rendu est minable.
Quoi qu'il en soit, bon boulot!
11 sept. 2008 à 17:15