Wie kann man die Timeout-Funktion von Javascript verhindern?

1721
David

Eine Website, die ich häufig nutze, verwendet das folgende 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; } 

Und js erscheint in der Mitte einer js-Datei, die Tausende von Zeilen lang ist. Dieses js verursacht nach einiger Zeit eine automatische Abmeldung, und ich möchte, wenn ich nicht so schnell gebootet werde. Das Timeout von "60000" scheint 10 Minuten zu sein. Mit welchen Mitteln auch immer, möchte ich entweder

1) Erhöhen Sie die Zeitüberschreitungsdauer, oder
2) beseitigen Sie die Zeitüberschreitungsfunktionen ganz, oder
3) simulieren Sie Aktivität, auch wenn das Fenster nicht scharfgestellt ist, um das Zurücksetzen der Zeitüberschreitung auszulösen.

Ich würde etwas wie NoScript verwenden, aber ich muss alle anderen Skripts auf der Seite zulassen. Es ist genau diese besondere Funktion, die ich inmitten einer massiven Datei durchlaufen muss.

Vielen Dank.

Ich wäre sehr dankbar, wenn die Lösung einen Router verwenden würde, der eine Variante der Tomato-Firmware verwendet, so dass alle meine Geräte, einschließlich des Tablets, von der Lösung profitieren können.

2
Wie wäre es mit einer Erweiterung, die auf jeder Seite etwas Javascript lädt, und die geladenen Js würden wiederholt eine Schleife ausführen und `resetTimebomb ('keydown');` ausführen, mit Pausen einer zufälligen Dauer zwischen 70 und 570 Sekunden? David vor 10 Jahren 1
Ist es möglich, dass Sie den Code bearbeiten können? Meine Lösung basiert darauf !!! JETHALAL vor 10 Jahren 0

1 Antwort auf die Frage

0
JETHALAL

nein nein nein ... Sie haben hier einige falsche Vorstellungen.

  1. Das Timeout von "60000" scheint 10 Minuten zu sein

    60000 Millisekunden = 60 Sekunden = 1 Minute

  2. setTimeoutIm Grunde gibt es eine Verzögerung. Es ist kein Timer. Es bedeutet einfach, dass in Ihrem Fall function idle()nach 1 Minute ausgeführt wird.

Wenn Sie den Timer loswerden und mit Ihrem Spiel fortfahren möchten, gibt es einen kleinen Trick.

Bearbeiten Sie einfach eine Zeile.

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

Konvertieren Sie dies in:

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

timeout () leitet Sie nach einiger Zeit um ... um dies zu vermeiden, rufen Sie es einfach nicht an.