Не работает таймер если закрыть страницы или перейти на другую

301
21 августа 2021, 06:20

Всем привет. Ребят, помогите решить проблемку. Имеется таймер который отправляет ajax запрос на php скрипт и выводит на страницу нужную инфу. Все прекрасно работает пока открыта страница. Но стоит закрыть страницу или перейти на другую, то таймер ничего не делает пока не открою страницу где он запущен. Помогите разобраться почему так происходит.

var newDate2, 
  intervalId2; 
if (localStorage["timer_upd"]) { 
  newDate2 = new Date(localStorage["timer_upd"]); 
  timerr(); 
  intervalId2 = setInterval(timerr, 15000); 
} 
 
function updFuel(tmr) { 
  newDate2 = Date.now() + 60 * tmr; 
  timerr(); 
  if (!intervalId2) intervalId2 = setInterval(timerr, 15000); 
  localStorage["timer_upd"] = new Date(newDate2).toISOString(); 
  // localStorage["span"] = true; 
} 
 
function timerr() { 
  var now2 = Date.now(), 
    rest1 = newDate2 >= now2 ? Math.round((newDate2 - now2) / 1000) * 1000 : 0, 
    s1 = ""; 
  if (!rest1) { 
    clearInterval(intervalId2); 
    intervalId2 = null; 
    localStorage.removeItem("timer_upd"); 
    // localStorage.removeItem("span"); 
  } else { 
    var rest3 = rest1 % 3600000; 
    let hh1 = (rest1 - rest3) / 3600000; 
    rest1 = rest3; 
 
    rest3 = rest1 % 60000; 
    let mm1 = (rest1 - rest3) / 60000; 
    rest1 = rest3; 
 
    rest3 = rest1 % 1000; 
    let ss1 = (rest1 - rest3) / 1000; 
    let ms1 = rest3; 
  } 
  $('.info').remove(); 
  $.ajax({ 
    type: 'POST', 
    url: '../fieldfunc', 
    data: { 
      tract_pl_udt: localStorage.getItem("selecttract"), 
      fuel_pl_upd: 1 
    }, 
    success: function(result) { 
      result = JSON.parse(result); 
      $('.updinfo').append('<p class="info" style="margin-bottom: 10px;"> Плуг: ' + localStorage.getItem("selectplow") + '<br>\ 
        				Трактор: ' + result[0].title + '<br>\ 
        				Топлива в баке: ' + result[0].fuel_now + ' литров</p>'); 
      if (result[0].fuel_now == 0) { 
        localStorage.removeItem("timer"); 
        localStorage.removeItem("timer_upd"); 
        localStorage.removeItem("span"); 
        localStorage.removeItem("selecttract"); 
        localStorage.removeItem("selectplow"); 
        setTimeout(function() { 
          window.location.href = "../field"; 
        }, 1000); 
      } 
    } 
  }); 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<button class="btn plowsbtn" onclick="updFuel(' + 37000 * $fz + ');">Вспахать</button>

READ ALSO
Как подключить файл с двумя type?

Как подключить файл с двумя type?

Вообщем, хочу подключить файл с модулями, а у браузеров есть особенность - нужно подключать так - <script type="module"></script>Но, у меня есть проэкт...

103
fetch , GET запросы , аргументы

fetch , GET запросы , аргументы

Есть проблемы и пара вопросов

120
Как можно убрать событие при клике на input?

Как можно убрать событие при клике на input?

Сейчас при клике на инпут срабатывает ajax событие, а мне надо что бы срабатывало, после ввода в инпут кол-ва товара!

113