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 :

Une boucle infinie qui ne freeze pas ?


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut Une boucle infinie qui ne freeze pas ?
    Bonjour,

    Je souhaiterais savoir si il était possible de faire une boucle infinie qui ne freeze pas le navigateur ?
    J'ai essayer avec un setTimeout() mais vu qu'il continue d’exécuter le code sa fait freeze le navigateur...
    J'ai également essayer d'appeler un setTimeout() de ma fonction à la fin de cette même fonction mais il ne se ré exécute pas non plus

    Sinon est-il possible de lancer une instruction depuis mon programme c++ pour lancer une fonction javascript ?
    Sans rouvrir une fenêtre bien sûr

    Je vous remercie d'avance.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 42
    Points : 35
    Points
    35
    Par défaut
    setInterval(), qui appelle ta fonction tous les x millisecondes ?

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    J'ai essayer avec un setTimeout() mais vu qu'il continue d’exécuter le code
    C'est le but d'un boucle infinie non .

    J'ai également essayer d'appeler un setTimeout() de ma fonction à la fin de cette même fonction mais il ne se ré exécute pas non plus
    Peut-on voir ton code pour que l'on puisse t'aider?

    A+.

  4. #4
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Bonjour et merci de vous réponse.

    Citation Envoyé par scfi1
    setInterval(), qui appelle ta fonction tous les x millisecondes ?
    C'est la même chose que setTimeout non ?

    Citation Envoyé par andry.aime
    C'est le but d'un boucle infinie non .
    Oui mais moi je voudrais une tempo entre deux exécution


    Voici mon code :
    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
     
    <html>
      <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript" language="JavaScript">
           function maFonction() {
    	var etat = docXml.getElementsByTagName('general');
            window.alert(etat.length);
            document.writeln(etat[0].firstChild.nodeValue);
            setInterval("maFonction()", 10000);
    }
     
            window.onload = function() {
                docXml = document.implementation.createDocument('', '', null);
                docXml.load("fichierXML.xml");
                maFonction();
            };
        </script>
      </head>
      <body>
      </body>
    </html>
    Le but étant en fait de récupérer les infos du fichier XML qui sont mis à jour et de les traiter en javascript pour en faire un affichage.
    Pour cela il faut donc évidemment que le script retourne chercher les valeurs dans le fichier jusqu’à ce que l'on lui dise d’arrêter.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function maFonction() {
    	var etat = docXml.getElementsByTagName('general');
            window.alert(etat.length);
            document.writeln(etat[0].firstChild.nodeValue);
    }
             window.onload = function() {
                docXml = document.implementation.createDocument('', '', null);
                docXml.load("fichierXML.xml");
                setInterval( function(){maFonction()}, 10000);
            };
    A+.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il faudra aussi penser à mettre à jour ton docXML de temps en temps, car là, tu travailles toujours sur la première version récupérée, donc tu ne risques pas de voir beaucoup d'évolutions

  7. #7
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Ah oui ... Merci Bovino remarque pertinente

    Par contre andry.aime ton script ne s’exécute toujours qu'une seul fois pour moi

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    ton script ne s’exécute toujours qu'une seul fois pour moi
    Normal, tu utilises writeln sur un document fermé

    Un document HTML possède deux états distincts : opened et closed.
    Lorsque tu utilises wrtie() ou writeln() quand le document est ouvert, JavaScript insère le ou les paramètres dans le document à l'endroit de l'appel de la méthode.
    Si le document est fermé, alors JavaScript l'ouvre avant d'insérer le contenu et l'ouverture implique que la page est recréée, donc que son contenu disparait, y compris son contexte JavaScript, en particulier les timers.

    D'où le conseil habituellement donné de ne pas utiliser write() !

  9. #9
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Ah oui super merci ! Sujet résolu

    Par contre j'ai un autre problème assez étrange je trouve ...

    "etat[0].firstChild.nodeValue" me génère une erreur : "etat[0] is undefined" si je retire le window.alert(etat.length).
    Mais je n'ai pas cet erreur si je laisse le window.alert, étrange

    Si vous avez le courage de répondre à ma question ...

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    window.onload = function() {
    	docXml = document.implementation.createDocument('', '', null);
    	docXml.async = false;
    	docXml.onload=function(){setInterval( function(){maFonction()}, 10000);};
    	docXml.load("fichierXML.xml");
    };

  11. #11
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Super merci

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

Discussions similaires

  1. Une boucle While qui ne fonctionne pas
    Par seremei dans le forum Langage
    Réponses: 6
    Dernier message: 25/10/2012, 11h33
  2. Réponses: 8
    Dernier message: 01/06/2010, 11h43
  3. une boucle for qui ne fonctionne pas
    Par piffeo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/11/2008, 21h52
  4. Select qui fais une boucle infinie
    Par MaitrePylos dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 28/03/2006, 17h29
  5. [FTP] comment corriger une boucle infinie ?
    Par sofybj dans le forum Langage
    Réponses: 8
    Dernier message: 08/11/2005, 14h49

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