Bonsoir,
évite les chaînes dans setTimeout, passe plutôt par une fonction anonyme :
reloading=setTimeout(function(){ window.location.reload(); }, 300000);
Edit: je crois avoir compris la question. Un setTimeout se fait côté client, le serveur n'est pas impliqué. Pour indiquer à l'utilisateur le temps restant avant le prochain rechargement, on peut lancer un second timer au même moment que le timer reloading. Ce second timer gèrera une fonction qui met à jour une horloge affichée sur la page.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| var $horloge = document.createElement("p");
document.body.appendChild($horloge);
var tempsRestant = 300000; // le même temps que pour reloading
// comme ce nombre apparaît plusieurs fois,
// il est sage d'utiliser à la place une variable
// déclarée une seule fois au début du code
setInterval(function( ){
tempsRestant -= 1000;
var minutes = Math.floor(tempsRestant / 60000);
var secondes = Math.floor(tempsRestant / 1000) % 60;
if (secondes < 10) secondes = "0" + secondes;
$horloge.textContent = minutes + ":" + secondes;
}, 1000); |
Normalement on n'a pas besoin de gérer l'arrêt de ce timer car ça correspond au rechargement de la page. Mais il peut arriver qu'on voie un temps négatif pendant le rechargement. À toi de voir si c'est gênant ou pas.
Partager