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 qui boucle sous Fx3 et pas sous ie6


Sujet :

JavaScript

  1. #1
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 412
    Points : 149
    Points
    149
    Par défaut script qui boucle sous Fx3 et pas sous ie6
    Bonsoir,

    voici un petit script de test (Edit : cf. test simplifié post suivant) qui fonctionne sous ie6 mais qui boucle sous Fx3 : quand je clique sur TEST je vois le résultat apparaître et la page se réinitialise aussitôt :
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
     
        <script type="text/javascript">
            var fileMessages = [];
     
            function ajouteMessage(txtMsg, criticiteMsg) {
                Msg = {
                    texte: txtMsg,
                    criticite: criticiteMsg
                };
                fileMessages.push(Msg);
            }
     
            function test() {
     
                ajouteMessage('message 1', 'info');
                ajouteMessage('message 2', 'avert');
     
                for (i in fileMessages) {
                    document.write(fileMessages[i].texte);
                    document.write(' : ');
                    document.writeln(fileMessages[i].criticite);
                    document.writeln('<br>');
                }
    	}
        </script>
     
        <a href="#" onclick="test();">+++ TEST +++</a>
    </body>
    </html>

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Aucune idée du problème, c'est plutôt étrange. Mais si tu ajoutes un return false à ta fonction test() et que tu fais onclick="return test();", la page n'est plus rarfraîchie mais FF semble pédaler dans le vide

  3. #3
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    Même en simplifiant à mort y'a toujours le problème :

    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
    <html>
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
     
        <script type="text/javascript">
            var fileMessages = [];
     
            function test() {
    			fileMessages.push('message');
                document.write(fileMessages[0]);
    		}
        </script>
     
        <a href="#" onclick="test();">+++ TEST +++</a>
    </body>
    </html>

  4. #4
    Membre habitué Avatar de Alt157
    Profil pro
    Inscrit en
    Février 2009
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 143
    Points : 146
    Points
    146
    Par défaut
    Et si tu ajoutes document.close(); après ta boucle ?

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
     
        <script type="text/javascript">
            var fileMessages = [];
     
            function ajouteMessage(txtMsg, criticiteMsg) {
                Msg = {
                    texte: txtMsg,
                    criticite: criticiteMsg
                };
                fileMessages.push(Msg);
            }
     
            function test() {
     
                ajouteMessage('message 1', 'info');
                ajouteMessage('message 2', 'avert');
    			
                for (i in fileMessages) {
                    document.write(fileMessages[i].texte);
                    document.write(' : ');
                    document.writeln(fileMessages[i].criticite);
                    document.writeln('<br>');
                }
    			document.close();
    	}
        </script>
     
        <a href="javascript:void(0);" onclick="test();">+++ TEST +++</a>
    </body>
    </html>
    Bonne soirée à toi !

  5. #5
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 412
    Points : 149
    Points
    149
    Par défaut
    Non, ça ne change rien.

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    J'ai trouvé pourquoi :-)

    => le document.write !

    celui ci écrase le lien, étant donnée que le onclick est effectué avant le href, MAIS que celui ci est dans la file d'attente des thread, après l'effacement du lien par le document.write , le navigateur attend un retour et tourne en boucle ...

    exemple pour contourner le problème :

    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
     
        <script type="text/javascript">
            var fileMessages = [];
     
            function ajouteMessage(txtMsg, criticiteMsg) {
                Msg = {
                    texte: txtMsg,
                    criticite: criticiteMsg
                };
                fileMessages.push(Msg);
            }
     
            function test() {
     
                ajouteMessage('message 1', 'info');
                ajouteMessage('message 2', 'avert');
     
                for (i in fileMessages) {
                    document.getElementById('toto').innerHTML+= (fileMessages[i].texte);
                   	document.getElementById('toto').innerHTML +=(' : ');
                    document.getElementById('toto').innerHTML +=(fileMessages[i].criticite);
                    document.getElementById('toto').innerHTML +=('<br>');
                }
    			return false;
    		}
        </script>
     
        <a href="#" onclick="return test();">+++ TEST +++</a>
    	<div id="toto">
     
    	</div>
    </body>
    </html>

  7. #7
    Membre habitué
    Avatar de Peanut
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 412
    Points : 149
    Points
    149
    Par défaut

    Merci et bravo, j'aurais pu chercher longtemps !

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

Discussions similaires

  1. Script qui marche sous Linux mais pas sous Windows et vice versa
    Par tu-phat dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 26/11/2009, 03h39
  2. Script qui fonctionne sous FireFox mais pas sous IE
    Par Sebastien14 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 27/01/2009, 11h32
  3. Script qui marche sous Firefox mais pas sous IE
    Par GreatDeveloperOnizuka dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/01/2008, 13h04
  4. script qui marche sous ie mais pas sous firefox
    Par sebicool dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 24/05/2007, 01h07
  5. Script qui marche sous FF mais pas sous IE
    Par xclam dans le forum Général JavaScript
    Réponses: 27
    Dernier message: 11/05/2007, 13h26

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