J'ai ce qui suit:
window.setTimeout(function() {
window.location.href = 'file.php';
}, 115000);
Comment puis-je, via une fonction .click, réinitialiser le compteur à mi-parcours du compte à rebours?
J'ai ce qui suit:
window.setTimeout(function() {
window.location.href = 'file.php';
}, 115000);
Comment puis-je, via une fonction .click, réinitialiser le compteur à mi-parcours du compte à rebours?
Réponses:
Vous pouvez stocker une référence à ce délai, puis appeler clearTimeout
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(...);
.clear()
objet timeout lui-même.
window.setTimeout
renvoie un nombre (l'ID du minuteur) et non un "objet timeout".
clearTimeout () et alimente la référence de setTimeout, qui sera un nombre. Puis ré-invoquez-le:
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 du corps dans les 5 secondes, la couleur d'arrière-plan sera noire.
Référence:
Remarque: setTimeout et clearTimeout ne sont pas des méthodes natives ECMAScript, mais des méthodes Javascript de l'espace de noms de la fenêtre globale.
Vous devrez vous souvenir du timeout "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();
}
var myTimer = setTimeout(..., 115000);
something.click(function () {
clearTimeout(myTimer);
myTimer = setTimeout(..., 115000);
});
Quelque chose de ce genre!
Cette minuterie déclenchera une boîte d'alerte "Bonjour" après 30 secondes. Cependant, chaque fois que vous cliquez sur le bouton de réinitialisation du minuteur, il efface le timerHandle, puis le réinitialise à nouveau. Une fois qu'il est tiré, le jeu se termine.
<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])} );
})();
});
Pour réinitialiser la minuterie, vous devez définir et effacer la variable de minuterie
$time_out_handle = 0;
window.clearTimeout($time_out_handle);
$time_out_handle = window.setTimeout( function(){---}, 60000 );
Je sais que c'est un vieux fil mais je suis venu avec ça aujourd'hui
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
}
et vous invoquez en utilisant
afterTimer('<timername>string', <interval in milliseconds>int, function(){
your code here
});