как узнать, сколько времени осталось для setTimeout?

#javascript

#javascript

Вопрос:

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

я использую javascript, любая помощь, пожалуйста?

Комментарии:

1. Это не лучший способ для чего-либо. Вместо этого у вас должно быть время ожидания сеанса на сервере.

2. как мне тогда сбросить таймер?

Ответ №1:

Если это «функция» — обязательно используйте Javascript, но если ваша цель — безопасность, используйте серверную часть, в этом нет сомнений.

Было бы большой неприятностью кодировать что-то для отслеживания каждого небольшого изменения, которое могло произойти, прокрутки, щелчка, фокусировки, нажатия клавиш и т.д., Чтобы Определить, был ли пользователь «простаивающим» или нет — так что идея использовать что-то вроде erichydns idleTimer, плагин jquery: http://www.erichynds.com/jquery/a-new-and-improved-jquery-idle-timeout-plugin


редактировать: это было бы более подходящим для вас: http://paulirish.com/2009/jquery-idletimer-plugin

здесь доступна демонстрационная версия, которая показывает в режиме реального времени, находится ли пользователь «в режиме ожидания» или нетhttp://paulirish.com/demo/idle-timer

Комментарии:

1. привет, спасибо за комментарий, плагин хорош только с одной проблемой: он опрашивает сервер, и я должен минимизировать запросы сервера, есть ли альтернатива js?

2. этот выглядит хорошо, позвольте мне проверить, работает ли это, еще раз спасибо 🙂

Ответ №2:

Вы можете уточнить setTimeout, используя следующий код:

 var t = setTimeout(myFunction,100000);
clearTimeout(t); //clear the timeout
  

Если вы хотите знать, сколько времени осталось, то вам нужно посчитать секунды или около того;)

Комментарии:

1. я делаю именно это code function reset_interval() { if (timer != null) { //alert('f'); currTime = new Date(); clearTimeout(timer); //clearInterval(timer); timer = null; //second step: implement the timer again<br /> timer = setTimeout(auto_logout,timeBeforeLogOut ); // completed the reset of the timer<br /> } }

2. Тогда ваша ошибка где-то в другом месте 😉 clearTimeout — это способ сделать это. Это работает.