Minuteur compte à rebours
Réglez les heures, minutes et secondes, lancez le compte à rebours, et entendez une alerte sonore claire à zéro — fonctionne même en arrière-plan.
1 052 vues
Comment le compte à rebours reste précis
Un compte à rebours qui soustrait simplement une seconde d'un total à chaque déclenchement de setInterval paraît simple, mais n'est pas précis dans la durée. Chaque tic suppose qu'exactement 1000 millisecondes se sont écoulées, mais la boucle d'événements du navigateur peut être occupée — d'autres scripts, des animations, ou un onglet en arrière-plan — et les tics se déclenchent avec quelques millisecondes de retard. Ces petits décalages s'accumulent en une dérive visible : un minuteur de 10 minutes construit ainsi peut finir plusieurs secondes en avance ou en retard une fois arrivé à zéro.
Cet outil évite ce problème avec une méthode différente : il calcule un horodatage cible fixe au moment où vous appuyez sur démarrer — l'heure actuelle plus la durée choisie — et à chaque tic, il se contente de demander combien de temps il reste jusqu'à cette cible, au lieu de décompter depuis un total en cours. Comme le temps restant est toujours recalculé à partir de deux lectures réelles de l'horloge, tout retard de tic accumulé s'annule automatiquement ; le temps affiché reste correct même quand des tics individuels se déclenchent en retard.
Ce qu'il faut savoir
Quand l'onglet que vous chronométrez passe en arrière-plan, les navigateurs limitent souvent les minuteurs pour économiser la batterie et le processeur, les déclenchant moins souvent que demandé. L'approche par horodatage cible gère cela avec élégance aussi : peu importe combien de tics ont été sautés, car le compte à rebours compare toujours l'heure cible réelle à l'heure actuelle réelle la prochaine fois qu'il s'exécute — il atteint zéro au bon moment quel que soit le degré de limitation subi par l'onglet entre-temps.
- Le carillon d'alerte est généré sur place avec le nœud oscillateur de la Web Audio API — aucun fichier audio à charger, donc aucun délai avant qu'il ne joue.
- Le titre de l'onglet du navigateur se met à jour avec le temps restant, afin que vous puissiez jeter un œil à un autre onglet et voir quand même le compte à rebours.
- La mise en pause enregistre la durée restante et recalcule un nouvel horodatage cible à la reprise, donc pause et reprise n'introduisent jamais de dérive non plus.
Questions fréquentes
Est-ce que j'entendrai l'alarme si je suis sur un autre onglet ?
Oui — le son d'alerte joue depuis cet onglet quel que soit l'onglet actif, tant que l'onglet du navigateur lui-même reste ouvert (non fermé).
Le compte à rebours se met-il en pause si mon ordinateur portable se met en veille ?
Il se met en pause avec le système, comme n'importe quel minuteur de navigateur — quand vous réveillez l'appareil, si l'heure cible est déjà dépassée, il affichera zéro et alertera immédiatement.
Puis-je régler des heures, pas seulement des minutes ?
Oui — heures, minutes et secondes sont toutes disponibles, cela fonctionne aussi bien pour un signal de 10 secondes que pour un compte à rebours de plusieurs heures.
Pourquoi le minuteur reste-t-il précis sur de longues durées ?
Parce qu'il n'additionne jamais les tics un par un. Il calcule un unique horodatage cible fixe au moment où vous appuyez sur démarrer, puis recalcule « cible moins maintenant » à chaque tic, si bien qu'un retard sur un tic isolé n'a aucun effet sur le résultat final — le minuteur atteint quand même zéro au moment exact.
La limitation d'un onglet en arrière-plan fausse-t-elle le compte à rebours ?
Non. Les navigateurs ralentissent les minuteurs des onglets inactifs pour économiser l'énergie, donc les tics peuvent se déclencher moins souvent, mais comme chaque tic recalcule le temps restant à partir de l'horodatage cible réel plutôt que de compter les tics écoulés, le compte à rebours atteint quand même zéro au moment réel exact.
Outils similaires
Signaler un problème
Minuteur compte à rebours
Commentaires
Pas encore de commentaires — soyez le premier à en écrire un !