@makaron710

Особенность JS?

Доброго всем времени.

Когда-то давным-давно, когда еще был молод и зелен, написал скрипт таймера до конца дня.
К сожалению, не мной в его работе была замечена особенность - при переходе на другую внутреннюю страницу и при возврате на страницу с таймером, через какое-то определенное время таймер останавливался.
Кто-нибудь может объяснить мне причину такого поведения?

Сам скрипт
<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>


Прошу не смеяться, я исправился и в данной задаче используется более продвинутое решение.
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
coolswood
@coolswood
https://coolswood.github.io
Эм... Если я правильно понял, что вы делаете, это не особенности js, а особенности работы браузера. Если текущая вкладка неактивна, на ней замораживаются js процессы для экономии ресурсов браузера, в том числе и таймер.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы