IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[JavaScript] Différence de comportement entre IE et FF


Sujet :

JavaScript

  1. #1
    Membre du Club

    Inscrit en
    Mars 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 54
    Points : 56
    Points
    56
    Par défaut [JavaScript] Différence de comportement entre IE et FF
    Bonjour,

    J'ai un petit soucis de compatibilité entre Internet Explorer et FireFox.


    Dans ma page web, j'appele une fonction javascript sur un double click au sein d'un balise span.

    Voici la fonction javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function fctTest (elt)
    {
    	var listTest = document.getElementsByName("chrono");
     
    	var cpt;
    	for (cpt=0; cpt<listTest.length; cpt++)
    	{
    		listTest[cpt].style.display = "inline";
    	}
    }

    Ce code marche très bien sous FireFox, mais sous IE le "getElementsByName" ne me ramene aucun element.

    Quelqu'un a t'il une idée?

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    bonjour,

    montre nous le code HTML de ta page

  3. #3
    Membre du Club

    Inscrit en
    Mars 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 54
    Points : 56
    Points
    56
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <span id="mrqDivText0" style="white-space: nowrap; z-index: 0; position: relative; visibility: hidden; top: 0px; left: 0px;" ondblclick="fctTest(this);">
    <span class="tcBannerText">Bandeau accueil &agrave; traduire<span name="chrono" style="display:none" class=" class="tcBannerText">&nbsp;&nbsp;121101388&nbsp;</span></span>
     
    </span>
    Voila en gros mon code. Le but est que lorsque l'utilisateur double click sur le bandeau déroulant, le chrono apparaisse. Je viens de remarquer que le paramètre "elt" que je trasmet ne sert à rien (il me servait avant et j'ai oublié de le retirer).

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    il y a une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <span id="mrqDivText0" style="white-space: nowrap; z-index: 0; position: relative; visibility: hidden; top: 0px; left: 0px;" ondblclick="fctTest(this);">
    <span class="tcBannerText">Bandeau accueil &agrave; traduire<span name="chrono" style="display:none" class=" class="tcBannerText">&nbsp;&nbsp;121101388&nbsp;</span></span>
    
    </span>
    est-ce le copier-coller ?

  5. #5
    Membre du Club

    Inscrit en
    Mars 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 54
    Points : 56
    Points
    56
    Par défaut
    Oups désolé j'ai rippé en recopiant.

    Voici le code corrigé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <span id="mrqDivText0" style="white-space: nowrap; z-index: 0; position: relative; visibility: hidden; top: 0px; left: 0px;" ondblclick="fctTest(this);">
    <span class="tcBannerText">Bandeau accueil &agrave; traduire<span name="chrono" style="display:none" class="tcBannerText">&nbsp;&nbsp;121101388&nbsp;</span></span>
     
    </span>
    Par contre entre temps j'ai fait des recherche de mon coté. Et ayant remarqué que la méthode getElementsByName() est dépréciée, j'essai de faire la meme chose en passant par getElementById(), mais bon c'est pas gagné. Mais bon je suis toujours intéressé pour savoir ce qui cause la différence de comportement entre IE et FF

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 142
    Points
    11 142
    Par défaut
    Citation Envoyé par YAMKI
    Par contre entre temps j'ai fait des recherche de mon coté. Et ayant remarqué que la méthode getElementsByName() est dépréciée, j'essai de faire la meme chose en passant par getElementById(), mais bon c'est pas gagné.
    En effet, mieux vaut utiliser getElementById. Il te suffit de changer le paramètre name par id et appliquer 1 règle : l'id doit être unique. Après tu cibles ton élément par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var element = documenet.getElementById("chrono");

    Citation Envoyé par YAMKI
    Mais bon je suis toujours intéressé pour savoir ce qui cause la différence de comportement entre IE et FF
    Bon, j'ai fait quelques tests avec IE (la version 5 mais bon) et Firefox.
    • Firefox fait la distinction entre l'attribut name et l'attribut id... Jusque là tout va bien
    • Pour IE c'est moins évident...
      • Code html : Sélectionner tout - Visualiser dans une fenêtre à part
        1
        2
        3
        4
         
        <input type="radio"  name="radio1" checked="checked">radio 1
        <input type="radio"  name="radio1">radio 2
        <input type="radio"  name="radio1">radio 3
        Ici document.getElementsByName retournera 3... Logique
        Je crois que c'est valable aussi pour les input de type button, hidden, text, checkbox, password et sans doute pour les textarea (bref, pour les balises utilisées pour les formulaires).
      • Plus dur :
        Code html : Sélectionner tout - Visualiser dans une fenêtre à part
        1
        2
        3
        4
         
        <span name="chrono">span1</span>
        <span name="chrono">span2</span>
        <span name="chrono">span3</span>
        Ici document.getElementsByName retournera 0.
        Même chose avec les div, p, etc...
      • Par contre :
        Code html : Sélectionner tout - Visualiser dans une fenêtre à part
        1
        2
        3
        4
         
        <span id="chrono">span1</span>
        <span id="chrono">span2</span>
        <span id="chrono">span3</span>
        Ici document.getElementsByName retournera 3.
        Mais ce code est faux car les id doivent être uniques....


    Conclusion : utilise document.getElementById
    Une remarque en passant : l'attribut name est utile au moins pour les boutons radio tout simplement pour distinguer les différents groupes :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <input type="radio" name="radio1" checked="checked" />Groupe 1 Radio 1
    <input type="radio" name="radio2" checked="checked" />Groupe 2 Radio 1
    <br /><br />
    <input type="radio" name="radio1" />Groupe 1 Radio 2
    <input type="radio" name="radio2" />Groupe 2 Radio 2
    <br /><br />
    <input type="radio" name="radio1" />Groupe 1 Radio 3
    <input type="radio" name="radio2" />Groupe 2 Radio 3

  7. #7
    Membre habitué Avatar de TSalm
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 177
    Points
    177
    Par défaut [Explorer] getElementsByName sur objet ajouté dynamiquement
    Bonjour à tous,

    Je dois avoir accés à des <select> par leur "NAME", combobox ajoutés dynamiquement.
    Le getElementsByName fonctionne très bien sur Firefox, mais pour cet en**phariné de IE ... il me renvoie un ô douloureux "undefined" ...


    Il me semblait qu'il ne faisait pas la distinction entre l'ID et le NAME,
    j'ai donc mit au début de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // getElementsByName() pour IE :
     if (navigator.appName == "Microsoft Internet Explorer" ) {
         document.getElementsByName = function(name) {
           var tab = new Array();
           tab[0] = document.getElementById(name);
           return tab;
         }
     }
    mais ça ne fonctionne pas...

    Y a t-il une solution ?

    merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/11/2008, 20h39
  2. Différence de comportement entre SE (win/Unix)
    Par freestyler dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 14/09/2008, 12h17
  3. différence de comportements entre JVM
    Par Nicaisse dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/08/2007, 11h41
  4. Réponses: 2
    Dernier message: 20/06/2007, 10h27
  5. Réponses: 5
    Dernier message: 10/04/2007, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo