Risposte:
È possibile memorizzare un riferimento a quel timeout e quindi chiamare clearTimeout
quel riferimento.
// 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(...);
.clear()
oggetto timeout stesso.
window.setTimeout
restituisce un numero (l'ID del timer) e non un "oggetto timeout".
clearTimeout () e alimenta il riferimento di setTimeout, che sarà un numero. Quindi invocalo nuovamente:
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()
}
In questo esempio, se non si fa clic sull'elemento body in 5 secondi, il colore di sfondo sarà nero.
Riferimento:
Nota: setTimeout e clearTimeout non sono metodi nativi ECMAScript, ma metodi Javascript dello spazio dei nomi della finestra globale.
Dovrai ricordare il timeout "Timer", annullarlo, quindi riavviarlo:
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();
}
var myTimer = setTimeout(..., 115000);
something.click(function () {
clearTimeout(myTimer);
myTimer = setTimeout(..., 115000);
});
Qualcosa del genere!
Questo timer emetterà una finestra di avviso "Hello" dopo 30 secondi. Tuttavia, ogni volta che si fa clic sul pulsante Reimposta timer cancella TimerHandle, quindi si ripristina nuovamente. Una volta sparato, il gioco termina.
<script type="text/javascript">
var timerHandle = setTimeout("alert('Hello')",3000);
function resetTimer() {
window.clearTimeout(timerHandle);
timerHandle = setTimeout("alert('Hello')",3000);
}
</script>
<body>
<button onclick="resetTimer()">Reset Timer</button>
</body>
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();
$(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])} );
})();
});
Per ripristinare il timer, è necessario impostare e cancellare la variabile timer
$time_out_handle = 0;
window.clearTimeout($time_out_handle);
$time_out_handle = window.setTimeout( function(){---}, 60000 );
so che questo è un vecchio thread, ma mi è venuto in mente oggi
var timer = []; //creates a empty array called timer to store timer instances
var afterTimer = function(timerName, interval, callback){
window.clearTimeout(timer[timerName]); //clear the named timer if exists
timer[timerName] = window.setTimeout(function(){ //creates a new named timer
callback(); //executes your callback code after timer finished
},interval); //sets the timer timer
}
e invochi usando
afterTimer('<timername>string', <interval in milliseconds>int, function(){
your code here
});