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 :

script fonctionne avec Firefox mais boucle sous IE6


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut script fonctionne avec Firefox mais boucle sous IE6
    Bonjour,
    Voici ma page html complète :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta http-equiv="pragma" content="no-cache">
    <style type="text/css">
    ul,li{list-style:none;}
    </style>
     
    <script language="JavaScript">
    <!--
    var expanded = null;
    var memopen = null;
    var expandedsubs;
    var memosubs;
     
    function SwitchMenu(id){
    var expand = document.getElementById(id);
     
    if(expand.style.display != "block"){
    //open
    if(expanded != null){ //if a menu is already shown
    //is there a memo ?
    if(memopen != null){
    //yes :
    //am I a sub of memo ?
    var issub = false;
    memosubs = memopen.getElementsByTagName("ul");
    for (var i=0; i<memosubs.length; i++){
    if(memosubs.id == expand.id){issub = true;}
    }
    if(issub == true){
    //yes :
    //close expanded
    expanded.style.display = "none";
    // memo stray the same
    }else{
    //no :
    //close memo and all its subs
    memopen.style.display = "none";
    memosubs = memopen.getElementsByTagName("ul");
    for (var i=0; i<memosubs.length; i++){
    memosubs.style.display = "none";
    }
    //destroy memo pointer
    memopen = null;
    }
    }else{
    //no :
    //is current menu a sub of expanded ?
    var issub = false;
    expandedsubs = expanded.getElementsByTagName("ul");
    for (var i=0; i<expandedsubs.length; i++){
    if(expandedsubs.id == expand.id){issub = true;}
    }
    if(issub == true){
    //yes :
    //dont close expanded
    memopen = expanded;
    //memo becomes expanded
    }else{
    //no :
    //close expanded
    expanded.style.display = "none";
    }
    }
    }
    //show current menu
    expand.style.display = "block";
    //expanded becomes expand
    expanded = expand;
    }else{
    expand.style.display = "none";
    }
    }
     
    </script>
    </head>
    <body>
     
    <div id='LayerNav' style='position:absolute; left:-30px; z-index:1'>
    <ul id='menulink'>
    <li onclick="SwitchMenu('menu1')"><a href="#">menu1</a></li>
    <ul id='menu1' style='display:none; text-indent:-35px'>
    <li onclick="SwitchMenu('submenu11')"><a href="#">submenu11</a></li>
    <ul id='submenu11' style='display:none; text-indent:-65px'>
    <li><a href="www.google.com">link1</a></li>
    <li><a href="www.google.com">link2</a></li>
    </ul>
    <li onclick="SwitchMenu('submenu12')"><a href="#">submenu12</a></li>
    <ul id='submenu12' style='display:none; text-indent:-65px'>
    <li><a href="www.google.com">link1</a></li>
    </ul>
    </ul>
    <li onclick="SwitchMenu('menu2')"><a href="#">menu2</a></li>
    <ul id='menu2' style='display:none; text-indent:-35px'>
    <li onclick="SwitchMenu('submenu21')"><a href="#">submenu21</a></li>
    <ul id='submenu21' style='display:none; text-indent:-65px'>
    <li><a href="www.google.com">link1</a></li>
    <li><a href="www.google.com">link2</a></li>
    </ul>
    <li onclick="SwitchMenu('submenu22')"><a href="#">submenu22</a></li>
    <ul id='submenu22' style='display:none; text-indent:-65px'>
    <li><a href="www.google.com">link1</a></li>
    </ul>
    </ul>
    </ul>
    </div>
    </body>
    </html>

    Tout fonctionne sous Firefox mais avec IE il semble que la fonction est appelée 2 fois de suite !
    Je ne comprend vraiment pas le problème.
    Merci de votre aide.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    pas bien compris la structure de tes listes, mais le <a href> là ne sert à rien : enlève-le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li onclick="SwitchMenu('menu1')"><a href="#">menu1</a></li>
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    le style des ul n'est pas initialisé dans les balises ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    le style des ul n'est pas initialisé dans les balises ...
    @ignitionflip > IE ne sait donc pas le récupérer via JS et tes tests tels que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(expand.style.display != "block")
    deviennent caduques [NDT]

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci à tous pour ces réponses.

    Citation Envoyé par E.Bzz Voir le message
    Bonjour,
    pas bien compris la structure de tes listes, mais le <a href> là ne sert à rien : enlève-le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li onclick="SwitchMenu('menu1')"><a href="#">menu1</a></li>
    A+
    en fait j'utilise ce "faux anchor" pour avoir le curseur "main" au survol du pointeur sourie. j'ai essayé sans mais le problème reste entier.

    Citation Envoyé par SpaceFrog Voir le message
    le style des ul n'est pas initialisé dans les balises ...
    comment ça ? je ne peu pas utiliser l'attribut style dans une balise ul ?
    pourtant le "display" est correct.

    Citation Envoyé par E.Bzz Voir le message
    @ignitionflip > IE ne sait donc pas le récupérer via JS et tes tests tels que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(expand.style.display != "block")
    deviennent caduques [NDT]

    A+
    sisi, ces tests fonctionnent sous IE, si j'ajoute un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(expand.style.display);
    il me renvoi bien l'information.

    en fait sous IE (et uniquement sous IE, quoique pas testé sous Safari), tout va bien lorsque je clic un menu de 1er niveau, mais si je clic un "submenu" ma fonction est appelé 2 fois de suite ...
    Je soupçonne un problème avec l'utilisation de l'événement "onclick" sous IE mais vraiment je ne trouve aucune piste

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par ignitionflip Voir le message
    en fait j'utilise ce "faux anchor" pour avoir le curseur "main" au survol du pointeur sourie.
    A vos ordre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li onclick="SwitchMenu('menu1')" style="cursor:pointer;">menu1</li>
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    A vos ordre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li onclick="SwitchMenu('menu1')" style="cursor:pointer;">menu1</li>
    A+

    excellent ! je fais compliqué pour faire simple moi des fois


    par contre toujours ce même soucie, est-ce que quelqu'un à pu tester cette page ? une idée, une petite piste ? j'en perd mon latin (pas très frais il est vrai)

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Il y a des "chances" que ton clic dans le sous-menu déclenche aussi le onclick du menu parent ...

    Fais une recherche sur CancelBubble et stopPropagation, le sujet a souvent été abordé ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Il y a des "chances" que ton clic dans le sous-menu déclenche aussi le onclick du menu parent ...

    Fais une recherche sur CancelBubble et stopPropagation, le sujet a souvent été abordé ...

    A+
    merci je ne connaissais pas cette propriété.
    je rajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.event.cancelBubble = true;
    au début de ma fonction et hop : tout fonctionne !!



    merci beaucoup, problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script fonctionne sur firefox mais pas IE
    Par johndu81 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/01/2013, 01h29
  2. Réponses: 1
    Dernier message: 05/07/2012, 17h18
  3. [AJAX] Script marche sur Firefox mais pas sous IE
    Par obito dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/03/2009, 11h50
  4. Une Action fonctionne sous FireFox, mais pas sur IE6/7
    Par 19cmos83 dans le forum Struts 1
    Réponses: 1
    Dernier message: 29/10/2008, 19h45
  5. opacity marche sous IE7 et firefox, mais pas sous IE6
    Par maxfive7 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 06/08/2007, 15h03

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