Timer, Stoppuhr und Wecker in einem Werkzeug
Stell oben eine Dauer ein und drücke Starten: Der Countdown läuft im Browser und meldet das Ende mit Ton und sichtbarem Signal. Daneben liegen eine Stoppuhr mit Rundenzeiten und ein Wecker auf eine feste Uhrzeit. Die Restzeit steht im Tab-Titel, du kannst also in einem anderen Tab weiterarbeiten. Nichts wird hochgeladen.
Warum gehen viele Web-Timer im Hintergrund nach?
Weil sie zählen statt zu rechnen. Ein naiver Timer ruft alle 1.000 Millisekunden eine Funktion auf und zieht jedes Mal eine Sekunde ab. Das funktioniert genau so lange, wie der Browser diesen Takt auch einhält – und das tut er nicht. Chrome drosselt Timer in verdeckten Tabs seit Version 57 auf einen Aufruf pro Sekunde und seit Version 87 (Januar 2021) im sogenannten intensiven Modus auf einen Aufruf pro Minute, sobald ein Tab länger als fünf Minuten im Hintergrund liegt. Firefox und Safari kennen vergleichbare Grenzen, und ein Gerät im Ruhezustand hält alles komplett an.
Ein zählender Timer verliert damit genau die Zeit, in der er nicht aufgerufen wurde. Fünf Minuten im Hintergrund werden zu fünf Aufrufen und damit zu fünf abgezogenen Sekunden. Das ist kein Randfall, sondern der Normalfall: Einen Timer stellt man, um etwas anderes zu tun.
Wie rechnet dieses Werkzeug stattdessen?
Es merkt sich beim Start einen Zeitstempel und zieht bei jeder Anzeige neu ab. Die Formel lautet schlicht Restzeit = Dauer − (jetzt − Startzeitpunkt), und sie liefert dasselbe Ergebnis, egal ob seit dem letzten Neuzeichnen 50 Millisekunden oder zwei Stunden vergangen sind. Das Intervall im Hintergrund trägt keine Information, es löst nur das Zeichnen aus.
Der zweite Baustein ist das Anhalten. Pause schreibt die bis dahin gemessene Zeit fest, Starten beginnt einen neuen Abschnitt mit neuem Zeitstempel. Addiert werden nur Abschnitte, die wirklich gelaufen sind – deshalb ergibt eine Messung mit zehn Pausen exakt dasselbe wie ein durchgehender Lauf gleicher Nettolänge.
Wie kommt der Ton pünktlich, wenn der Tab schläft?
Über die Uhr der Audio-Ausgabe. Sobald du startest, wird die Tonfolge nicht „irgendwann später“ abgespielt, sondern für einen exakten Zeitpunkt auf der Zeitachse des AudioContext eingeplant. Diese Uhr hängt an der Audio-Hardware und läuft unabhängig vom JavaScript-Takt weiter, auch wenn der Tab gedrosselt ist. Pausierst oder setzt du zurück, wird der eingeplante Ton wieder verworfen.
Was auch das nicht rettet, ist ein zugeklappter Laptop oder ein geschlossener Tab: Dann existiert die Seite nicht mehr, und es kann nichts klingen. Für Weckzeiten, die einen geschlossenen Deckel überstehen müssen, ist der Wecker im Telefon das richtige Werkzeug – das sagen wir lieber deutlich, als ein Versprechen zu geben, das die Technik nicht hält.
Ton allein reicht nicht
Ein Signal, das nur hörbar ist, geht an allen vorbei, die stumm geschaltet haben, Kopfhörer nutzen oder in einer lauten Küche stehen. Deshalb kommt das Ende hier auf drei Wegen: als kurze Tonfolge, als deutlich sichtbares Hinweisfeld über der Anzeige und als Wechsel des Tab-Titels, den man in der Tab-Leiste sieht, ohne die Seite zu öffnen. Auf Telefonen, deren Browser die Vibrations-Schnittstelle unterstützt, kommt eine kurze Vibration dazu.
Countdown, Stoppuhr oder Wecker?
Countdown, wenn die Länge zählt: eine Viertelstunde Pause, fünf Minuten fürs Ei, fünfundzwanzig Minuten Pomodoro. Das Minutenfeld ist bewusst nicht bei 59 gedeckelt, 90 Minuten sind also eine gültige Eingabe.
Stoppuhr, wenn du messen willst, wie lange etwas gedauert hat. Sie zeigt Hundertstelsekunden und erfasst pro Runde Rundenzeit und Gesamtzeit; schnellste und langsamste Runde sind markiert, sobald mindestens zwei erfasst sind.
Wecker, wenn der Zeitpunkt zählt: der Zug um 17:40, der Anruf um 15:00. Du gibst die Uhrzeit ein, den Abstand rechnet das Werkzeug aus. Liegt die Uhrzeit heute schon hinter dir, wird der nächste Tag genommen – und zwar über den Kalendertag, damit die Rechnung an den Umstellungswochenenden nicht um eine Stunde danebenliegt.
Bleibt der Timer privat?
Ja, und zwar ohne Fussnote. Es gibt keinen Server, der von deinem Timer erfährt, kein Konto, kein Cookie für die Dauer und keine Anfrage nach aussen. Alles ist Rechnen gegen die Uhr deines Geräts. Die einfachste Gegenprobe: Seite laden, Flugmodus einschalten, Timer starten – er läuft weiter.