#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 — это способ сделать это. Это работает.