Как переключаться между разными window.locations в зависимости от ответа на метод window verify () - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть страница, на которой представлен тест, где javascript устанавливает timeOut, чтобы покинуть страницу, если пользователь слишком долго ждет (180 "), прежде чем дать ответ и нажать" Отправить ". Это должно быть сделано по разным причинам, и яне может изменить обязательство. После 180 "на странице, поэтому, в настоящее время код возвращается в файл pagepage.php, где пользователь должен будет повторно ввести свой уникальный идентификатор, чтобы продолжить тест.

Этопростой код JavaScript:

setTimeout(function () {
    window.location.href= "beginningpage.php";
}, 180000);

Все идет гладко.Теперь мне нужно изменить код, чтобы лучше управлять делом.Мы предполагаем, что если пользователь ушел, он не сможет ответить на окно оповещения.Итак, скажем, мы нажимаем Подтвердить () после этих 180 ".

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

В противном случае, если пользователь все еще находится за своим столом и просто интересуется ответом, ему должна быть предоставлена ​​возможностьнажмите «хорошо, я тороплюсь», чтобы остаться на странице, скажем, еще 60 ». Это означает, что после первого отображения окна подтверждения необходимо установить другой тайм-аут, не 180000, как раньше, а 60000.

Возможно, идея использования другого window.locations.href не правильная.

Как может быть код для выполнения всего, что мне нужно, как описано выше?

Ответы [ 3 ]

1 голос
/ 17 апреля 2019

Итак, скажем, мы нажимаем Подтвердить () после этих 180 ".

Как написать код, чтобы - когда отображались окна подтверждения () - если никто не нажимал кнопку подтверждения (скажем, 30 "), код автоматически закрывал окно подтверждения и оставлял страницу, возвращающуюся в beginpage.php?

Ты не можешь. confirm, alert и promopt - пережитки 1990-х годов с поведением "останови мир". (Главным образом. Браузеры медленно разрушают это с течением времени.) Это означает, что ни один из вашего кода JavaScript не может работать, пока отображается архаичное окно.

Вместо этого переключитесь на использование современных методов оповещения (с указанием «модального» div и т. Д.), Чтобы ваш код JavaScript мог использовать setTimeout, чтобы сдаться через соответствующий промежуток времени.

1 голос
/ 17 апреля 2019

Вы никогда не сможете достичь этого с помощью alert или confirm, потому что они блокируют дальнейшее выполнение JS, пока всплывающее окно не станет активным.Вам нужен пользовательский модал с элементом html и функцией js. Все, что вам нужно сделать, это вызвать clearTimer для автоматической перезагрузки страницы на основе ответа от custom confirm modal.

var x =  document.getElementById("stopReloadBtn")
var reloadTimer
setTimeout(function() {
  x.style.display = "block"
  reloadTimer = setTimeout(function() {
    window.location.href = "beginningpage.php"
  }, 5000)
}, 5000);

function stopReload(){
   clearTimeout(reloadTimer)
   x.style.display = "none"
}
<button id="stopReloadBtn" style="display: none" onclick="stopReload()">Still Here?</button>

Я сократил таймеры до 5 секунд в этом коде .Кнопка появится через 5 секунд.После этого у вас будет 5 секунд, чтобы нажать эту кнопку, иначе страница перезагрузится.

1 голос
/ 17 апреля 2019

Только не используйте поле подтверждения ... Покажите div с двумя кнопками через 180 секунд, а затем начните считать свои 30 секунд.

...