Como evitar a função de tempo limite do javascript?

2

Um site que frequento utiliza o seguinte 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;
 }

E esse js aparece no meio de um arquivo js de milhares de linhas. Esse js causa um auto-logout depois de um breve período de tempo, e eu gostaria que ele não fosse inicializado tão rapidamente. O tempo limite de "60000" parece ser de 10 minutos. Por qualquer meio necessário, eu gostaria de

1) Aumentar a duração do tempo limite ou 2) eliminar completamente as funções de tempo limite ou 3) simula a atividade, mesmo quando a janela não está em foco, para acionar o reset do tempo limite.

Eu utilizaria algo como o NoScript, mas preciso permitir todos os outros scripts na página. É exatamente essa função específica, no meio de um arquivo enorme, que preciso subverter.

Obrigado.

Eu ficaria muito grato se a solução envolvesse a utilização do meu roteador, que executa uma variante do firmware do Tomato, para que todos os meus dispositivos, incluindo o tablet, possam se beneficiar da solução.

    
por David 27.08.2013 / 22:51

1 resposta

0

não, não, não .. você tem alguns equívocos aqui.

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

    60000 milissegundos = 60 segundos = 1 minuto

  2. setTimeout basicamente te dá atraso.Não é um temporizador.É simplesmente significa que no seu caso function idle() será executado após 1 minuto.

se você quiser se livrar do timer e continuar com o jogo, há um pequeno truque para ele.

Basta editar uma linha ...

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

Converta isso em:

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

    }

timeout () redireciona você para depois de algum tempo ... para evitar isso, não ligue para ele.

    
por 07.09.2013 / 16:21