Redefinindo um setTimeout

Eu tenho o seguinte:

window.setTimeout(function() { window.location.href = 'file.php'; }, 115000); 

Como posso, por meio de uma function .click, redefinir o contador no meio da contagem regressiva?

Você pode armazenar uma referência a esse tempo limite e, em seguida, chamar clearTimeout nessa referência.

 // in the example above, assign the result var timeoutHandle = window.setTimeout(...); // in your click function, call clearTimeout window.clearTimeout(timeoutHandle); // then call setTimeout again to reset the timer timeoutHandle = window.setTimeout(...); 

clearTimeout () e alimenta a referência do setTimeout, que será um número. Em seguida, invoque-o novamente:

 var initial; function invocation() { alert('invoked') initial = window.setTimeout( function() { document.body.style.backgroundColor = 'black' }, 5000); } invocation(); document.body.onclick = function() { alert('stopped') clearTimeout( initial ) // re-invoke invocation() } 

Neste exemplo, se você não clicar no elemento body em 5 segundos, a cor do plano de fundo ficará preta.

Referência:

Nota: setTimeout e clearTimeout não são methods nativos de ECMAScript, mas methods Javascript do namespace de janela global.

 var myTimer = setTimeout(..., 115000); something.click(function () { clearTimeout(myTimer); myTimer = setTimeout(..., 115000); }); 

Algo nesse sentido!

Você terá que lembrar o tempo limite “Timer”, cancelá-lo e reiniciá-lo:

 g_timer = null; $(document).ready(function() { startTimer(); }); function startTimer() { g_timer = window.setTimeout(function() { window.location.href = 'file.php'; }, 115000); } function onClick() { clearTimeout(g_timer); startTimer(); } 

Este timer irá triggersr um alerta “Olá” após 30 segundos. No entanto, toda vez que você clica no botão do timer de redefinição, ele limpa o timerHandle e o reajusta novamente. Uma vez que é demitido, o jogo termina.

     

Para redefinir o timer, você precisaria definir e limpar a variável de timer

 $time_out_handle = 0; window.clearTimeout($time_out_handle); $time_out_handle = window.setTimeout( function(){---}, 60000 ); 
 $(function() { (function(){ var pthis = this; this.mseg = 115000; this.href = 'file.php' this.setTimer = function() { return (window.setTimeout( function() {window.location.href = this.href;}, this.mseg)); }; this.timer = pthis.setTimer(); this.clear = function(ref) { clearTimeout(ref.timer); ref.setTimer(); }; $(window.document).click( function(){pthis.clear.apply(pthis, [pthis])} ); })(); }); 
 var redirectionDelay; function startRedirectionDelay(){ redirectionDelay = setTimeout(redirect, 115000); } function resetRedirectionDelay(){ clearTimeout(redirectionDelay); } function redirect(){ location.href = 'file.php'; } // in your click >> fire those resetRedirectionDelay(); startRedirectionDelay(); 

aqui está um exemplo elaborado para o que realmente está acontecendo em http://jsfiddle.net/ppjrnd2L/