Як запобігти функцію тайм-ауту javascript?


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-файлу завдовжки тисячі рядків. Цей js викликає автоматичний вихід із системи після досить короткої тривалості, і мені хотілося б, якби я не завантажувався так швидко. Час очікування "60000", здається, становить 10 хвилин. Я б хотів зробити будь-який спосіб

1) Збільшити тривалість таймауту, або
2) повністю виключити функції таймауту, або
3) імітувати активність, навіть коли вікно не в фокусі, щоб викликати скидання тайм-ауту.

Я б використовував щось на зразок NoScript, але мені потрібно дозволити всі інші сценарії на сторінці. Саме цю функцію в середині масивного файлу мені потрібно підривати.

Дякую.

Я був би дуже вдячний, якби рішення стосувалося мого маршрутизатора, який працює за допомогою програмного забезпечення Tomato, щоб усі мої пристрої, включаючи планшет, могли отримати користь від рішення.


1
Як щодо розширення, яке завантажує деякий JavaScript на кожному завантаженні сторінки, і js, який він завантажує, циклічно та виконуватиметься resetTimebomb('keydown');повторно, з перервами довільної тривалості між 70 та 570 секундами?
Девід

чи можливо ви можете редагувати код? Моє рішення засноване на цьому !!! його досить легко
HIRA THAKUR

Відповіді:


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 () перенаправляє вас через деякий час .. щоб уникнути цього просто не називайте його.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.