Jpeg69
Messages postés28Date d'inscriptionvendredi 9 mars 2007StatutMembreDernière intervention 8 février 2008
-
8 févr. 2008 à 09:30
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 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.
<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>
rbinse
Messages postés2Date d'inscriptionvendredi 8 février 2008StatutMembreDerniè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.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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»
Vous n’avez pas trouvé la réponse que vous recherchez ?
Jpeg69
Messages postés28Date d'inscriptionvendredi 9 mars 2007StatutMembreDerniè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 !
Jpeg69
Messages postés28Date d'inscriptionvendredi 9 mars 2007StatutMembreDerniè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.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 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»