Perché i timer del browser sfasano e come un conto alla rovescia online resta preciso
Un timer del browser resta preciso quando legge l'orologio, non quando conta i tick. Salva l'orario di fine quando il timer parte, poi sottrae l'orario attuale ogni volta che lo schermo si aggiorna. I tick possono arrivare in ritardo o rallentare in una scheda in background, ma la sottrazione è sempre corretta nel momento in cui la pagina la ricalcola.
Timer onlineTi serve un timer o un cronometro?Usalo gratisPerché contare i tick fa sfasare il timer
Un modo comune di scrivere un timer è sottrarre uno da un contatore ogni secondo. Il browser esegue questo passaggio con un timer ripetuto, che chiede di eseguire una funzione ogni tot millisecondi. Il browser non garantisce tempi esatti. Una pagina occupata, un dispositivo lento o una scheda nascosta possono ritardare ogni tick, e i ritardi si sommano. Un contatore che perde qualche millisecondo per tick, dopo pochi minuti è chiaramente sbagliato.
Cosa fanno le schede nascoste
I browser rallentano i timer nelle schede che non stai guardando. Questo fa risparmiare batteria e tempo di processore. Chrome, per esempio, limita la frequenza con cui i timer ripetuti girano in una scheda nascosta, e dopo che una scheda è rimasta nascosta a lungo, quei timer possono girare molto più raramente. Un contatore in una scheda così resta indietro, ed è per questo che un conto alla rovescia che conta i tick può finire in ritardo.
Leggere l'orologio invece
La soluzione è registrare quando il timer è partito e quando deve finire. Il browser mette a disposizione un orologio ad alta risoluzione, performance.now(), pensato per misurare intervalli. Quando lo schermo si aggiorna, il timer calcola il tempo rimanente come orario di fine meno l'orario attuale. Un aggiornamento in ritardo mostra per un attimo un numero non aggiornato, ma l'aggiornamento successivo lo corregge, perché il calcolo non dipende da quanti tick sono passati. Il timer online di questo sito funziona così.
Mettere in pausa salva il tempo rimanente. Riprendere imposta un nuovo orario di fine pari all'orario attuale più il tempo rimanente, quindi la pausa non altera il conteggio.
La pagina imposta anche un timer per il momento in cui il conto alla rovescia deve finire. L'avviso quindi non resta in attesa del prossimo aggiornamento dello schermo, anche se lo schermo è in ritardo.
Perché il display arrotonda per eccesso
Un conto alla rovescia mostra il tempo rimanente arrotondato al secondo intero successivo. Un timer di tre secondi mostra 00:03 all'inizio, 00:02 e 00:01 mentre scorre, e 00:00 alla fine. Arrotondare per difetto mostrerebbe 00:00 per l'ultimo secondo, che sembrerebbe un secondo in anticipo. Un timer da cucina funziona allo stesso modo.
Suono e schermo
Il segnale acustico è generato dal sistema audio del browser, quindi non viene scaricato alcun file audio. I browser consentono il suono solo dopo un'azione dell'utente sulla pagina, quindi l'audio viene preparato quando premi Avvia. Restano valide le impostazioni di volume e silenziamento del dispositivo.
Il blocco dello schermo è facoltativo. Dove il browser lo supporta, la pagina può chiedere al dispositivo di tenere lo schermo acceso mentre il timer è in funzione. Il browser rilascia il blocco quando la scheda viene nascosta, quindi la pagina lo richiede di nuovo quando torni.
Cosa misura un giro dello cronometro
Un cronometro somma i tratti di tempo in cui è stato in funzione, e la pausa ferma questa somma. Il totale è il tempo trascorso dall'avvio, mentre un giro è la variazione del totale rispetto al giro precedente. Il tempo del giro 1 è uguale al primo totale. Il tempo del giro 2 è uguale al secondo totale meno il primo. Il display mostra i centesimi di secondo, ma la misurazione è limitata dal dispositivo e dal browser, quindi considera approssimativa l'ultima cifra. Per gli orari di turno invece che per un cronometro, il calcolatore di ore lavorate fa i conti a partire dagli orari, come spiegato in ore lavorate per i turni notturni.
Verifiche pratiche
- Prova un timer breve con un orologio prima di affidarti a lui per cucinare o per un allenamento. Un test di 30 secondi basta per capire se il dispositivo funziona correttamente.
- Tieni il volume alto e controlla che il dispositivo non sia in modalità silenziosa.
- Un timer mantiene l'ora esatta anche con la scheda nascosta, ma chiudere la scheda o ricaricare la pagina lo azzera.
- Se un portatile va in stop durante un conto alla rovescia, controlla il tempo rimanente quando si riattiva, perché il comportamento in stop dipende dal dispositivo e dal browser.
Come farlo con fixmint
- Scegli Timer, poi premi un valore predefinito come 5 min, oppure scrivi in Ore, Minuti e Secondi.
- Premi Avvia. Puoi cambiare scheda e il tempo resta corretto. Ricaricare la pagina azzera il timer.
- Spunta Tieni lo schermo acceso mentre funziona se il tuo browser offre questa opzione.
- Per i giri, scegli Cronometro, premi Avvia, poi Giro per ogni tempo parziale.
- Esegui un test di 30 secondi con un orologio prima di affidarti al timer per cucinare o per un allenamento.
Casi particolari
- Cambi di orario. Un conto alla rovescia misura il tempo trascorso, non l'orologio da parete, quindi il cambio dell'ora legale non lo influenza.
- Timer lunghi. Un timer di diverse ore resta preciso, ma verifica che nel frattempo il dispositivo non sia andato in stop.
- Più timer. Ogni timer mantiene il proprio orario di fine, quindi due timer in due schede non interferiscono tra loro.
Risposte rapide
Perché un timer va in ritardo in una scheda in background? I browser rallentano i timer ripetuti nelle schede nascoste, quindi un timer che conta i tick resta indietro. Un timer che legge l'orologio no.
Il timer sarà corretto quando torno alla scheda? Sì. Mostra il tempo rimanente a partire dall'orario di fine salvato.
Qual è la differenza tra un giro e un totale? Un giro è il tempo trascorso dal giro precedente. Il totale è il tempo trascorso dall'avvio del cronometro.
Tradotto dal Originale in inglese con l'assistenza dell'IA.
Commenti
Nessun commento per ora. Sii il primo.


