Javascript setTimeout на iOS Safari

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

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

Однако в iOS Safari этот подход не работает, так как setTimeout "останавливается", когда пользователь переходит к другому приложению на своем телефоне. Как только пользователь снова открывает Safari и возвращается на страницу, таймер продолжает работать с того места, где он остановился, вместо того, чтобы смотреть на общее время, которое истекло.

Любые предложения о том, как приблизиться к предупреждению о превышении времени ожидания сеанса, которое не ломается на iPhone?

1 ответ

Решение

  • Установите время окончания сеанса в переменной.

  • Вместо использования счетчика используйте дату javascript:

    // get a date object
    var today = new Date();
    
    // ask the object for some information
    var hours = today.getHours();
    var minutes = today.getMinutes();
    var seconds = today.getSeconds();
    var theHour = today.getHours();
    

  • Сравните время окончания с текущим временем каждую секунду

    Отказ от ответственности: обрабатывать случай, когда пользователь возвращается и сеанс завершен.

  • Другие вопросы по тегам