2

Сайт, который я часто посещаю, использует следующий javascript

    function idle() {
     $(document).unbind('mousemove');
     $(document).unbind('keydown');
     $(document).on('mousemove', function () {
         resetTimebomb('keydown');
     });
     $(document).on('keydown', function () {
         resetTimebomb('mousemove');
     });
     setTimeout('idle();', 60000);
 }

 function resetTimebomb(psUnbind) {
     $(document).unbind(psUnbind);
     $.ajax({
         global: false,
         url: '/internal/reset_timebomb.php',
         success: function (sData) {
             if ($.trim(sData).length && sData != 'STILL_LOGGED_IN') {
                 timeout();
             }
         }
     });
 }

 function timeout() {
     var sReturnTo = '&return_to=' + encodeURIComponent(window.location.pathname + window.location.search);
     var sReturnToUser = typeof (iLoggedInUserID) != 'undefined' ? '&return_to_user=' + iLoggedInUserID.toString() : '';
     window.location = '/index.php?message=TIMEOUT' + sReturnTo + sReturnToUser;
 }

И этот js появляется в середине файла js длиной в тысячи строк. Это приводит к автоматическому выходу из системы через довольно короткий промежуток времени, и мне бы хотелось, чтобы меня не загружали так быстро. Тайм-аут "60000" кажется 10 минут. Любыми необходимыми средствами я хотел бы либо

1) Увеличьте время ожидания или
2) полностью исключить функции тайм-аута, или
3) имитировать активность, даже когда окно не в фокусе, чтобы запустить сброс тайм-аута.

Я хотел бы использовать что-то вроде NoScript, но мне нужно разрешить все другие скрипты на странице. Именно эти особые функции, в середине массивного файла, мне нужно подорвать.

Благодарю.

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

1 ответ1

0

нет нет нет .. у вас есть некоторые заблуждения здесь.

  1. Тайм-аут "60000" кажется 10 минут

    60000 миллисекунд = 60 секунд = 1 минута

  2. setTimeout основном дает вам задержку.Это не таймер.Это просто означает, что в вашем случае function idle() будет выполнена через 1 минуту.

Если вы хотите избавиться от таймера и продолжить игру, есть небольшая хитрость.

Просто отредактируйте одну строку ..

success: function (sData) {
    if ($.trim(sData).length && sData != 'STILL_LOGGED_IN') {
        timeout();//erase this like,comment it out.
    }

Преобразовать это в:

  if ($.trim(sData).length && sData != 'STILL_LOGGED_IN') {

    }

timeout() перенаправляет вас через некоторое время .. чтобы избежать этого, просто не вызывайте его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .