Неактивные вкладки экономят ресурсы и таймеры в них срабатывают раз в 10 реже.
Поэтому для таймера, который пытается показывать реальное время, исходить из того, что срабатывания будут нерегулярными и редкими. Сработал очередной «тик» ? — хорошо, повезло.
Часы лучше делать вычисляемыми. Запустили — запомнили время (до которого отсчёт).
Сработал очередной «тик» — посчитали, где мы сейчас: Date.now()
и сколько сейчас времени до времени-Ч. И это отрисовали.