ClassName la ligne de code mystère [Résolu]

Signaler
Messages postés
96
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
10 février 2011
-
Messages postés
544
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
20 mai 2005
-
Bonjour,

Au tout début d'un fichier .js trés trés long réalisé par un chevronné professionnel de la programmation web, j'ai trouvé cette ligne de commande :

if (document.all) classFix = "className" ;
else classFix = "class";

Or je me demande à quoi peut-elle bien servir ?

Je pense qu'elle permet de résoudre un problème de compatibilité, mais je ne sais pas entre quoi et quoi. Un truc du genre si tu supportes document.all alors utilise className ou dans le cas contraire utilise class. Mais en fait, j'en sais rien.

Plus loin dans le code on trouve ceci :

col = document.createElement("div") //on créé un nouveau div
col.setAttribute("id", "bidule")//cette ligne ne sert à rien pour le problème posé, elle est ici présente juste pour rendre hommage à l'auteur de ce code
col.setAttribute(classFix, "laClaclasseasonpepere")//class présente dans la feuille de style

Donc ça doit servir à quelque chose !

J'attends vos suggestions !

11 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
entre IE (qui gère document.all) et les moteurs de rendus gecko... (pour lesquels il faut utiliser document.getElmentById...)


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
544
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
20 mai 2005

Je dirai plutôt que IE ne supporte pas :
setAttribute("class", "laClaclasseasonpepere")// conforme aux standards DOM
mais:
setAttribute("className", "laClaclasseasonpepere")// bizare !!

j'avais déjà coincé la dessus et je mets plutôt :
col.className = "laClaclasseasonpepere"// pas DOM

essayez ce test :

<html>
<head>
<style>
.laClaclasseasonpepere
{
position:absolute;background-color:yellow;
top:10px;left:10px;width:200px;height:200px
}
</style>


</head>



<script type="text/javascript">
if (document.all) classFix = "className";
else classFix = "class";
col = document.createElement("div") //on créé un nouveau div
col.setAttribute(classFix, "laClaclasseasonpepere")//class
document.body.appendChild(col) //ajoute l'élément dans la page
</script>
<style>

</html>
Messages postés
544
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
20 mai 2005

<DT>setAttribute(name, value)
<DD>Cette méthode ne retourne aucune valeur.
Le paramètre name est du type String.
Le paramètre value est du type String.

c'est la méthode DOM2 recommandée par le W3C
http://www.yoyodesign.org/doc/w3c/dom2/core/ecma-script-binding.html

IE représente 90% des navigateurs et ne respecte pas les standards, alors il faut faire du code bricolé pour passer sur tous les navigateurs !

pour aider drbosko pour poser une question, il faut sélectionner
forum/poser une questiondans le menu en haut de cette page.
ON ne peut pas mettre une page HTML dans un DIV,
seulement dans une FRAME ou une IFRAME quoique l'iframe ne fasse pas partie des standards.</DD>
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
c'est effactivement un problème de compatibilitée... et un code OO...

rien d'extraordinaire...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
Messages postés
96
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
10 février 2011
3
Oui, mais de compatibilité entre quoi et quoi ?

(je dis professionnel au vu du reste du code, pas ce qui est juste exposé ici.)
Messages postés
96
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
10 février 2011
3
Merci de ton aide !

S
apakus
l'autre était pris
Messages postés
544
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
20 mai 2005

sapakus, ce que fait l'auteur m'intéresse, tu peut donner l'url de son site?merci
Messages postés
96
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
10 février 2011
3
Il s'agit du site du Herald Tribune : www.iht.com




Sapakus
l'autre était pris
Messages postés
4
Date d'inscription
jeudi 17 février 2005
Statut
Membre
Dernière intervention
5 mars 2005

<DIR>
Bonjour à tous,


j'aimerais savoir dans kel langage je peux réaliser ceci ;


J'ai une page web simple avec une feuille de style (CSS) (deffinissant la disposition des differentes divisions (
)) Je me suis basé sur le model de DreamWeaver ( CSS page design, un truc du style ! pour ke vous ayez un appercut plus clair peut etre et donc j'aimerais ... lorsque je clic sur un lien se trouvant dans :
qu'il envoie une page HTML simple dans la balise
.


J'espere avoir été assez clair étant donné que je suis un novice de la programmation.


Merci d'avance.

</DIR>
DrBosko
Messages postés
96
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
10 février 2011
3
En plaçant, dans le code test de ChimelPremier: alert(classFix); après le if, j'obtiens :

class avec : Mozilla 1.7.3 et Netscape 7.02

className avec : IE6 et Opera 7.54



Si maintenant je remplace le if par : classFix="class";

Mozilla : rectangle jaune

Netscape : rectangle jaune

IE6: rien du tout

Opera : rectangle jaune << tiens tiens ?



avec : classFix="className";

Mozilla : rien

Netscape : rien

IE6 : rectangle jaune

Opera : rectangle jaune



Conclusion :





<li>Mozilla et Netscape ne supporte pas document.all</li>
<li>IE6 et Opera le supporte</li>
<li>Mozilla et Netscape reconnaissent class comme argument de setAttribute</li>
<li>IE6 reconnait className comme argument de setAttribute</li>
<li>Opera reconnait aussi bien class que className comme argument de setAttribute</li>

Ceci étant dit, la syntaxe objet.className="laClaclasseasonpepere";
est reconnue par les 4 navigateurs dans leurs versions respectives
citées plus haut. On peut donc s'autoriser à penser que la condition
dont il est question est éventuellement destinée à des navigateurs
peut-être plus anciens qui ne géreraient pas la syntaxe : objet.className="uneclasse";
et obligeraient l'utilisation de setAttribute. Mais ceci reste une
hypothèse. Si ce n'est pas le cas cette condition s'avère inutile.



Les questions se posent sans cesse, mais le problème demeure.



Que la force du rectangle jaune soit avec vous.





Sapakus
l'autre était pris
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
Mozilla et netscape sont des ,navs au moteur de rendu gecko... ça fait doublon de dire qu'ils réagissent pareil...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org