Доброго всем времени.
Когда-то давным-давно, когда еще был молод и зелен, написал скрипт таймера до конца дня.
К сожалению, не мной в его работе была замечена особенность - при переходе на другую внутреннюю страницу и при возврате на страницу с таймером, через какое-то определенное время таймер останавливался.
Кто-нибудь может объяснить мне причину такого поведения?
Сам скрипт
<script>
document.addEventListener("DOMContentLoaded", function (event) {
function countdown(minutes) {
var seconds = 60;
var mins = minutes;
function tick() {
var date = new Date();
var now = date.getTime();
var timeZone = date.getTimezoneOffset() * 60;
var nowSec = Math.floor(now / 1000) - timeZone;
var nowDay = Math.floor(nowSec / 60 / 60 / 24);
var secEndOfTheDay = ((nowDay * 24 * 60 * 60) - (nowSec) + 24 * 60 * 60);
var stayHours = Math.floor(secEndOfTheDay / 60 / 60);
var stayMin = Math.floor(secEndOfTheDay / 60) - (stayHours * 60);
var staySec = Math.floor(secEndOfTheDay) - (stayHours * 60 * 60) - (stayMin * 60);
var hour1 = document.getElementById("hour1");
var min1 = document.getElementById("min1");
var sec1 = document.getElementById("sec1");
var current_minutes = mins - 1;
seconds--;
hour1.innerHTML = (stayHours < 10 ? "0" : "") + stayHours.toString();
min1.innerHTML = (stayMin < 10 ? "0" : "") + stayMin.toString();
sec1.innerHTML = (staySec < 10 ? "0" : "") + staySec.toString();
if (seconds > 0) {
setTimeout(tick, 1000);
} else {
if (mins > 1) {
countdown(mins - 1);
}
}
}
tick();
}
countdown();
});
</script>
Прошу не смеяться, я исправился и в данной задаче используется более продвинутое решение.