J'ai les éléments suivants :
window.setTimeout(function() {
window.location.href = 'file.php';
}, 115000);
Comment puis-je, via une fonction .click, réinitialiser le compteur à mi-chemin du compte à rebours ?
J'ai les éléments suivants :
window.setTimeout(function() {
window.location.href = 'file.php';
}, 115000);
Comment puis-je, via une fonction .click, réinitialiser le compteur à mi-chemin du compte à rebours ?
Vous pouvez stocker une référence à ce délai, et ensuite appeler clearTimeout
sur cette référence.
// 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(...);
@Cort3z c'est parce que window.setTimeout
renvoie un nombre (l'ID du timer) et non un "objet timeout".
ClearTimeout() et donne la référence du setTimeout, qui sera un nombre. Puis ré-invoquez-la :
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()
}
Dans cet exemple, si vous ne cliquez pas sur l'élément body dans les 5 secondes, la couleur de fond sera noire.
Référence :
Remarque : setTimeout et clearTimeout ne sont pas des méthodes natives de l'ECMAScript, mais des méthodes Javascript de l'espace de nom global de la fenêtre.
Vous devrez vous souvenir du délai d'attente "Timer", l'annuler, puis le redémarrer :
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();
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Vous pouvez probablement utiliser une implémentation de débouclage existante.