Accueil > Forum > > > > Comportement étrange de setTimeout(), il "mémorise" les évènements
Comportement étrange de setTimeout(), il "mémorise" les évènements
jeudi 3 juin 2010 à 16:48:50 |
Comportement étrange de setTimeout(), il "mémorise" les évènements

nitrique
|
Bonjour à tous,
J'ai une appli Web qui permet de faire défiler des contenus ("Steps") de la manière d'un diaporama.
Il y a 2 modes de défilement des steps: Auto (un temps est défini pour chaque step) et manuel (clic sur un bouton).
Voici le problème (l'incohérence n'apparait que sous IE):
L'appli démarre en mode auto, les temps d'affichage des steps sont bien respectés.
Passons au mode manuel et naviguons... Lorsqu'on revient au mode procédure, les steps s'enchaînent à la même vitesse que celle à laquelle on les a fait défiler dans le mode manuel. Le setTimeout() est complètement perturbé.
J'ai essayé des clearTimeOut() à gogo, mais rien n'y fait.
J'ai isolé le cas de figure dans un exemple simple et autonome:
Code HTML : <html><head><title>TEST</title>
<script type="text/javascript">
var tab = new Array(5, 1, 3, 5, 1, 5, 5, 5, 5, 5, 5, 5, 5); // Tableau du temps d'affichage de chaque Step
var idx = 0; // Index du step en cours
var modeDefilAuto = true; // Mode de défilement actuel (auto/manuel)
function afficheStep() { // Affiche le step de l'idx en cours
document.getElementById("divMain").innerHTML = "Etape: "+idx+" ("+tab[idx]+" sec)<br />Défilement Auto: "+modeDefilAuto
+".<script language='javascript'>setTimeout('faireNext();', "+(tab[idx] * 1000)+");<\/script>";
for (var i=0; i<document.getElementById("divMain").getElementsByTagName("script").length; i++) { // Boucle pour que le javascript injecté soit interpreté
eval(document.getElementById("divMain").getElementsByTagName("script")[i].innerHTML);
}
}
function changeMode() { // Passe du mode auto au mode manuel et inversement
modeDefilAuto = ! modeDefilAuto;
idx = 0;
afficheStep();
}
function nextStep() { // Passe au step suivant
if (idx<12) {
idx++;
afficheStep();
}
}
function faireNext() {
if (modeDefilAuto) {
nextStep();
}
}
</script>
</head><body onLoad="afficheStep();">
<center>
<br />
<div id="divMain" style="background-color:#CCCCCC;">Principal</div><br />
<input type="button" value="Step suivant" onClick="nextStep();" />
<input type="button" value="Changer de mode" onClick="changeMode();" />
</center>
</body></html>
Pouvez vous me donner une explication ?
Merci d'avance.
|
|
vendredi 4 juin 2010 à 22:45:36 |
Re : Comportement étrange de setTimeout(), il "mémorise" les évènements

PetoleTeam
|
Réponse acceptée !
Bonjour,
il serait souhaitable que tu killes le timer, avec clearTimeout, avant de rappeler la fonction setTimeout.
PS : drôle de façon d'activer le javascript !!!
;O)
|
|
mardi 8 juin 2010 à 10:47:32 |
Re : Comportement étrange de setTimeout(), il "mémorise" les évènements

nitrique
|
Bonjour PetoleTeam,
Impec, c'était ça... Je le faisait, mais pas ou il fallait.
Oui, pour la façon d'activer le JS, j'ai chopé ça sur la toile... Ça fonctionne pas mal.
Merci.
|
|
mardi 8 juin 2010 à 18:43:16 |
Re : Comportement étrange de setTimeout(), il "mémorise" les évènements

PetoleTeam
|
Bonjour,
le principal est que cela marche même si ta façon de procéder me laisse un peu pantois...
;O)
|
|
mardi 8 juin 2010 à 21:07:09 |
Re : Comportement étrange de setTimeout(), il "mémorise" les évènements

nitrique
|
En effet... Mais c'est fait exprès.
En fait, mon appli est en jQuery+PHP.
En ajax, je met le code javascript dans le DIV depuis un script PHP pour ne pas avoir à rafraichir la page.
J'ai voulu reproduire le cas en Javascript pur le plus fidèlement possible pour bien identifier le problème, voir si ça ne venait pas d'autre chose.
Voilà, pour ne pas vous laisser pantois. 
|
|
Cette discussion est classée dans : auto, mode, settimeout, idx, steps
Répondre à ce message
Sujets en rapport avec ce message
Problème : window.blur() [ par Mickael ]
Salut !j'ai cette fonction :setTimeout("xtpop.blur();",10000); // je réduit la popup au bout de 10 sec .setTimeout("xtpop.?????();",10000); // je veux
Combo box et redirection auto [ par evilfrog83 ]
J'ai une liste déroulante, et j'aimerais que le choix d'une option de cette liste envoie directement sur une autre page, dans une autre frame. (main_f
menu dynamique [ par mamy ]
Bonjour,voilà je dois créer une page web pour un site de vente en lignesur ma page d'accueil je vais afficher le menu avec les grandes catégories de p
Div, police, .... [ par stephbb75 ]
Salut tous,J'ai un tit problème et je trouve pas la solution !J'ai un div, et je voudrais pouvoir changer la taille de la police de caractére pour tou
Formulaire avec tableau auto dimensionné selon la taille de la fenetre [ par julien71 ]
Je dois faire un tableau qui se redimensionne selon la taille de la fenetre.Les données sont stockées dans un tableau qui contient des enregistrements
SeTtimeout et frame [ par fcdconnect ]
petit probleme ce script ne fonctionne pas (le timeout)onClick="javascript:setTimeout(parent.topFrame.document.location.reload(),4000);"l'objectif est
Exécution ok en mode débug - ko en direct [ par Bruto ]
J'ai créé un applet pour envoyer des mials en interne, ...Celui-ci marche bien en débogage directement dans le compiltateur J++ & netbeansMais lorsque
popup auto ajustable. comment faire? [ par MarsL ]
j'ai une popup qui s'ouvre avec ce source :function popup() { nom=document.forms[0].appli_nom.value; window.open('/LGAppli/servlet/LGAppli_telecha
Détection d'un navigateur I-mode?? [ par OniJ ]
Bonjour,J'aimerai savoir si il existe un moyen de détecté un navigateur i-mode avec un javascript?CARPE DIEM
Remplissage auto d'un formulaire [ par adadoudou ]
Bonjour, J'ai créer un formulaire contenant une liste déroulante et plusieurs zones de texte à remplir. J'aimerais savoir comment je pourrais faire po
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|