Problème de SetTimeOut()

Résolu
Jpeg69 Messages postés 28 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 8 février 2008 - 8 févr. 2008 à 09:30
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 8 févr. 2008 à 12:41
Bonjour tout le monde !

J'ai un léger soucis avec le SetTimeOut().
Je l'utilise naturellement pour gérer un compte à rebours.

Celui-ci marche parfaitement sous FireFox et commence bien à 0.

En revanche mon problème se trouve sur IE7, où celui-ci ne commence pas à 0 !!!
J'ai l'impression qu'il se cummule sans s'initialiser (j'en suis à 50461297  !).
Ainsi je ne peux plus l'utiliser correctement.

Je cherche donc un moyen d'initialiser le SetTimeOut() pour qu'il commence à 0 sous IE7.

J'ai déjà pris connaisance du ClearTimeOut(), mais celui-la ne fait qu'arréter le SetTimeOut().
Vider le cache du navigateur ne change rien non plus.

J'attend donc vos réponse avec impatience !
Et merci d'avance.

PS : Je HAIS IE, c'est juste que j'ai besoin de faire un site compatible sous ces 2 navigateurs.
A voir également:

8 réponses

rbinse Messages postés 2 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 8 février 2008
8 févr. 2008 à 10:06
Bonjour,

Essaie d'utiliser setInterval
http://www.toutjavascript.com/reference/reference.php?ref=setInterval&parent=6
avec une variable globale que tu décrémentes à chaque appel. Lorsque que tu arrives à 0, tu appelles clearInterval
http://www.toutjavascript.com/reference/reference.php?ref=clearInterval&parent=6

 <html>
<head>
    <title>setInterval</title>
    <script type="text/javascript">
        var n = 5; // pendant 5 secondes
        c = setInterval("chrono()", 1000); // Appel toutes les secondes
        function chrono(){
            document.getElementById("chrono").innerHTML = n;
            if (--n==0) clearInterval(c);
        }
    </script>
</head>

   

</html>
3
rbinse Messages postés 2 Date d'inscription vendredi 8 février 2008 Statut Membre Dernière intervention 8 février 2008
8 févr. 2008 à 11:36
La valeur renvoyée par Settimeout est un identifiant, à passer à clearTimeout par exemple, tu ne peux avoir aucun contrôle sur lui. Cela dépend du navigateur. C'est un hasard que cela commence à 0 avec firefox... Tu dois utiliser une variable si tu veux avoir du contrôle.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
8 févr. 2008 à 09:42
Bonjour,

>>FireBug |
¦————————¦——————————————————————————————————————————————————————————¦
|Internet|activer le deboggage : Outils/options Internet/Avancés |
|Explorer| dans la liste, sous "Navigation" : décocher |
| | ° Afficher une notification de chaque erreur de script |
| | ° Désactiver le débogage de Scripts (Internet Explorer) |
| | |
| | et mieux, télécharger le Debogger IE |
¦————————¦——————————————————————————————————————————————————————————¦
|K—Meleon|regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Opera |regarder la "console d'erreurs" |
| | utils / Asole d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Safari |regarder Debug / Show JavaScript Console |
| | |
| |modif Fichier "Support:\Documents and Settings\utilisateur|
| |\Application Data\Apple Computer\Safari\Preferences.plist"|
| | y ajouter <key>IncludeDebugMenu</key> |
| | <true/> |
!————————!——————————————————————————————————————————————————————————!

  

<hr />                Cordialement            Bul         «mon Site»     «M'écrire»
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
8 févr. 2008 à 09:52
parce qu'entre nous, "initialiser un setTiemout() pour qu'il commence à 0", ça ne veut rien dire.
un setTimeout, c'est : tu lanceras la séquence javascript citée dans x milli-secondes. pas plus.
<hr />                Cordialement            Bul         «mon Site»     «M'écrire»
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jpeg69 Messages postés 28 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 8 février 2008
8 févr. 2008 à 10:50
Salut !


>>bah.... ne l'utilises plus !... il y a de superbes alternatives

    pourquoi se faire du mal ? c'est stupide et inutile.


1 : J'ai besoin de gérer une compatibilité FireFox / IE. Donc j'utilise les 2 obligatoirement !


2 : C'est intéressant et utile de connaître les différences entre ces
navigateurs. Cela permet de s'adapter plus facilement et d'avoir une
ouverture d'esprit selon les demandes du patron ou de clients !


Effectivement j'ai peut-être pas assez détaillé mon "problème".

Sous FireFox :


    function MaFonction()

             {

                      MaVar = setTimeout('MaFonction()',1000); //Le
setTimeout appelle la fonction dans laquelle il est, donc ça boucle
(idéal pour gérer une date dynamiquement).

                      //à la première utilisation MaVar = 0

                      //à la deuxième utilisation (au bout d'une seconde donc) MaVar = 1


                      //Ainsi je peux gérer différentes instructions précises au bout d'un certain temps voulus.


                      //Liste d'instructions....


              }

Sous IE :


    function MaFonction()


             {


                      MaVar = setTimeout('MaFonction()',1000); //Le
setTimeout appelle la fonction dans laquelle il est, donc ça boucle
(idéal pour gérer une date dynamiquement).


                      //à la première utilisation MaVar = 50453550


                      //à la deuxième utilisation (au bout d'une seconde donc) MaVar = 50453551


                      //Ainsi je NE peux PLUS gérer différentes
instructions précises au bout d'un certain temps voulus sachant que le
chiffre indiqué est inconnu à chaque fois que je lance IE.

                      //Donc inutile de chercher des formules mathématiques.



                      //Liste d'instructions....



              }


En se qui concerne FireBug et Debogger IE, aucun ne dédecte des "erreurs".


>>parce qu'entre nous, "initialiser un setTimeout() pour qu'il commence à 0", ça ne veut rien dire.


Je viens de démontrer que ça veut bien dire quelque chose. J'espère ne
pas te l'apprendre, mais le setTimeout() renvoi bel et bien une valeur.


J'espère avoir été plus clair cette fois.


PS : Pourquoi mon texte est passé en bleue dans mon premier post ???? Je n'ai jamais demandé ça !
0
Jpeg69 Messages postés 28 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 8 février 2008
8 févr. 2008 à 10:51
Je vais tester le setInterval rbinse.
0
Jpeg69 Messages postés 28 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 8 février 2008
8 févr. 2008 à 11:56
Merci de tes réponses rbinse !

L'utilisation de ce setInterval() set très intéressante.

Effectivement j'avai utilisé le principe que tu me propose, et voila le résultat :

Sous FireFox ça marche très bien (comme par hasard).
Sous IE7 ça marche pas vraiment (comme par hasard ^^). Ses secondes sont rapide est elles ne sont pas égales !! Vraiment bizar.

J'ai donc remplacé le setInterval() par un setTimeout() tout en respectant ton principe.
Cette fois-ci ça marche très bien sous FireFox et sous IE7 ! (les miracles existes !)

Merci encore !

PS : Je revient sur mon "initialiser un setTimeout() pour qu'il commence à 0", effectivement ça veut rien dire. Mais la simple explication de rbinse suffit.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
8 févr. 2008 à 12:41
ben... si on avait eu ça d'entrée :
  {     MaVar = setTimeout('MaFonction()',1000);
          //à la première utilisation MaVar = 0
    je t'aurais dit le même chose que rbins... je crois.
>>Cette fois-ci ça marche très bien sous FireFox et sous IE7 ! (les miracles existes !)
    quand on fait les choses correctement, pas de souci ( avec IE ou FF !)
    aucun miracle ici    :o))<hr />                Cordialement            Bul         «mon Site»     «M'écrire»
0
Rejoignez-nous