Compte à rebours Javascript - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Compte à rebours Javascript (/showthread.php?tid=5828) Pages :
1
2
|
Compte à rebours Javascript - tesco - 29-11-2011 Bonjour à tous, En faite j'ai un soucis avec un compte à rebours en javascript, il fonctionne parfaitement mais le problème c'est quand la page se charge le compte à rebours lui se charge avec 1seconde de retard ce qui à pour effet de décalé la page lorsque ce fameux compte à rebours apparait. J'ai farfouiné sur le web, soit j'ai le même problème avec d'autres soit le décompte ne se fait pas automatiquement. A oui je précise que le compte à rebour défile sans rafraichissement de la page. En faite je voudrais qu'il décompte le temps en temps réel mais qu'il s'affiche en meme temps que la page et c'est la ou je bloque. Voici mon code: Citation :<script> RE: Compte à rebours Javascript - Viciousity - 29-11-2011 Je pense que c'est simplement du au temps de chargement de la page. Sans m'avancer plus rapidement, mais j'ai déjà eu ce soucis pour d'autres scripts. En fait quand tu commences a charger la page, PHP stocke directement ta variable de temps (coté serveur). Ensuite il faut le temps que ta page charge (Javascript, CSS, images...). Vu que ce chargement varie selon la taille des de ces différents éléments, il se peut que quand il se lance, il aie un peu de retard. En solution, tu peux par exemple essayer de mettre ton javascript au dessus de ta balise HTML. Sinon c'est que plutôt de calculer le temps restant en PHP, le calculer dans ton javascript : - PHP = Date de fin du compte a rebours. - JS = Calcul du temps a partir du moment ou il est chargé jusqu'à la la date de fin du compte a rebours, puis décompte. Si tu ne comprend pas quelque chose dis le moi (je suis pas toujours clair :S) RE: Compte à rebours Javascript - php_addict - 29-11-2011 (29-11-2011, 03:50 PM)Viciousity a écrit : Je pense que c'est simplement du au temps de chargement de la page. non c'est la valeur dans setInterval(Rebour, 1000) qui fait declencher la function dans 1000ms et non pas de suite d'où le retard d'affichage, si tu m'était 4000 il y aura 4sec avant l'affichage commence par remplir ta <div id="temps"></div> (côté serveur/php ou client/JS peut importe) et cela t'affichera la valeur du compte à rebour, et apres JS fais le reste. faudrait tester mais si tu laisse le script tourner 1 ou 2 heure il est possible que ton chrono se décale et là tu peut rien y faire à part le mettre à jour en ajax, mais c'est vraiment se prendre la tête pour rien... RE: Compte à rebours Javascript - Hideaki - 29-11-2011 Si tu ne souhaites pas avoir de retard ou le limité à une seconde, ne fonctionne pas explicitement en mode compte à rebours mais en date de fin. Phase d'initialisation
Dans la fonction Rebours
Je n'ai pas testé mais le principe est là, tu devrais plus n'avoir de décalage. Une des erreurs est de penser que tous le monde est correctement synchronisé. RE: Compte à rebours Javascript - Ter Rowan - 29-11-2011 je rejoins la proposition de php_addict le problème me semble t il est visuel : pendant une seconde on ne voit rien puis s'affiche la phrase "Arrivage dans XXX" qui bouscule tout Il suffit d'écrire la phrase avec la valeur qui va bien et on résout le pb d'affichage RE: Compte à rebours Javascript - tesco - 29-11-2011 Merci, j'ai résolu le problème par contre Hideaki, je ne souhaitais pas me basé sur l'heure du serveur car je stock la durée dans ma BDD, mais comme ton code à l'air plus fiable, je vais le testé. Merci encore RE: Compte à rebours Javascript - Hideaki - 29-11-2011 Pas de soucis, par contre une durée à toujours basé sur une date et heure de référence, je prends un exemple si tu lances une construction et qu'elle dure 1h, ta construction se finira toujours à la date du lancement + la durée, donc tu pourras toujours mettre si besoin dans ton code php, un truc comme cela new Date()->getTime() + durée pour date_du_rebours_restant_en_milliseconde. RE: Compte à rebours Javascript - tesco - 29-11-2011 En faite, mes joueurs changent de ville toutes les 22heures, je stock 22heures dans ma BDD et lance une tache cron pour faire le décompte des 22heures. La méthode que tu dis est mieux ? RE: Compte à rebours Javascript - Hideaki - 29-11-2011 Tu me perturbes, si c'est toutes les 22h pour stocker cette valeur dans ta bdd, à moins qu'elle puisse varié ou que tu la décrémentes chaque heure par exemple, stocker la date et l'heure du prochain changement de ville peut-être intéressant si, par exemple ton serveur s'arrête 2 ou 3 heures, comment ton système se comportera ? Et tu auras ta réponse RE: Compte à rebours Javascript - tesco - 29-11-2011 je stock 22heures (xxxx minutes) dans ma BDD, toutes les minutes je lance la tache cron ou je retire une minute. Si le serveur s'arrete du coup le système sera "en pause". En 3 ans ou j'utilise des serveurs dédié chaque panne était de ma faute donc on va dire que c'est rare Mais même avec ta méthode si le serveur s’arrête le système est en pause |