Перенаправить пользователя после 60 секунд простоя / бездействия? - PullRequest
7 голосов
/ 12 апреля 2011

Как я могу использовать JavaScript на моем сайте, чтобы перенаправить пользователя на страницу /logout после 60 секунд бездействия?

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

Возможно ли это с помощью JavaScript?

Ответы [ 3 ]

6 голосов
/ 12 апреля 2011

Я полагаю, вы ищете что-то вроде этого:
http://paulirish.com/2009/jquery-idletimer-plugin/

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

4 голосов
/ 03 сентября 2018

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

<script>
(function() {

    const idleDurationSecs = 60;    // X number of seconds
    const redirectUrl = '/logout';  // Redirect idle users to this URL
    let idleTimeout; // variable to hold the timeout, do not modify

    const resetIdleTimeout = function() {

        // Clears the existing timeout
        if(idleTimeout) clearTimeout(idleTimeout);

        // Set a new idle timeout to load the redirectUrl after idleDurationSecs
        idleTimeout = setTimeout(() => location.href = redirectUrl, idleDurationSecs * 1000);
    };

    // Init on page load
    resetIdleTimeout();

    // Reset the idle timeout on any of the events listed below
    ['click', 'touchstart', 'mousemove'].forEach(evt => 
        document.addEventListener(evt, resetIdleTimeout, false)
    );

})();
</script>

Вы хотите перенаправить на домашнюю страницу (обычно на /), измените '/logout' на '/':

    const redirectUrl = '/';  // Redirect idle users to the root directory

Если вы хотите перезагрузить / обновить текущую страницу, просто измените'/logout' в коде выше до location.href:

    const redirectUrl = location.href;  // Redirect idle users to the same page
4 голосов
/ 08 января 2015

Существует также более свежая версия плагина.

Он сможет инициировать событие простоя для всего документа или отдельных элементов.Например, наведите курсор мыши на некоторый элемент в течение x секунд, и он вызовет событие.Другое событие вызывается, когда пользователь снова становится активным.

Это простое событие позволит вам перенаправить пользователя по истечении заданного времени бездействия.

Поддерживаемое действие: колесо прокрутки при перемещении мыши DOMMouseScroll колесико мыши mousedown касание при касании MSPointerDown MSPointerMove

https://github.com/thorst/jquery-idletimer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...