Таймер обратного отсчета на нескольких страницах - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть таймер на домашней странице. Когда пользователь выполняет какое-либо действие, например, перемещение мыши, таймер сбрасывается. Когда таймер обратного отсчета до 05:00, система отобразит предупреждение для сброса таймера, нажав «ОК». Если в течение 5 минут не будет выполнено никаких действий и таймер обратного отсчета до 00:00, пользователь будет вынужден выйти из системы. Моя проблема в том, что этот таймер работает только на одной странице, если у меня открыто две страницы, таймер сбрасывается только на целевой странице. Я все еще выйду из-за несфокусированной страницы.

Может ли кто-нибудь помочь мне в этом? Большое спасибо!

<script type="text/javascript">
  var flag = false;
  startTimer();
  function startTimer() {
    var presentTime = $("#Status").text().toString();
    var timeArray = presentTime.split(":");
    var m = timeArray[0];
    var s = checkSecond((timeArray[1] - 1));
    if(s==59) {
      m=m-1;
      if(m < 10) {
        m = "0" + m;
      }
    }

    if (m==05 && s==00) {
      flag = true;
      BootstrapDialog.alert("You have 5 minutes remaining in your session. Click \"OK\" to extend the session.", function() {
        flag = false;
        resetTimer();
      });
    }

    if(!flag) {
      //Reset timer upon user action
      document.onload = resetTimer;
      document.onmousemove = resetTimer;
      document.onmousedown = resetTimer;
      document.ontouchstart = resetTimer;
      document.onclick = resetTimer;
      document.onscroll = resetTimer;
      document.onkeydown = resetTimer;
    }
    else {
      document.onload = null;
      document.onmousemove = null;
      document.onmousedown = null;
      document.ontouchstart = null;
      document.onclick = null;
      document.onscroll = null;
      document.onkeydown = null;
    }

    if (m==0 && s==00) {
      window.location.replace("/Logout");
    };

    setTimeout(startTimer, 1000);
  }

  function checkSecond(sec) {
    if (sec < 10 && sec >= 0) {sec = "0" + sec};
    if (sec < 0) {sec = "59"};
    return sec;
  }

  function resetTimer() {
    $("#Status").html("30:00");
  }
</script>

<div> Your session has <h5 id="Status">30:00</h5> remaining. </div>

1 Ответ

0 голосов
/ 18 сентября 2018

Ваша проблема в том, что вы хотите управлять двумя страницами одним скриптом, но переменные на каждой странице независимы.

Если вы решите эту проблему, вы сможете контролировать свою страницу.

Вы можете получить переменные m и s из cookie или localalstorage. varibales в cookie и localalstorage можно посетить на другой странице, если эти страницы находятся в одном корне.

попробуйте, просто замените variables.get && установите его из cookie или localalstorage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...