Перейти к содержимому

Как предотвратить функцию тайм-аута 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 длиной в тысячи строк. Это приводит к автоматическому выходу из системы через довольно короткий промежуток времени, и мне бы хотелось, чтобы меня не загружали так быстро. Тайм-аут «60000» кажется 10 минут. Любыми необходимыми средствами я хотел бы либо

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

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

Благодарю.

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

1 775 просмотров
David спросил 12 лет назад
D 123

1 ответ

0

no no no..you have some misconceptions here.

  1. The timeout of "60000" seems to be 10 minutes

    60000milliseconds = 60 seconds = 1 minute

  2. setTimeout basically gives you delay.Its not a timer.It simply means that in your case function idle() will be executed after 1 minute.

if you want to get rid of timer and continue with you game,There is a small trick to it.

Just edit one line..

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

Convert this in to:

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

timeout() redirects you to after some time..to avoid this just dont call it.

JETHALAL ответил 12 лет назад
J 165