Javascript setTimeout на iOS Safari - PullRequest
       31

Javascript setTimeout на iOS Safari

1 голос
/ 06 марта 2012

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

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

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

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

1 Ответ

2 голосов
/ 06 марта 2012

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

Вместо счетчика используйте дату 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();

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

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

...