Dupliqué possible: strong>
JavaScript: Pause Settimeout (); P> blockQuote>im en utilisant jQuery et travaillez sur un système de notification pour mon site. Les notifications FADEOUT automatiquement à l'aide de la fonction Settimeout. P>
Comment puis-je arrêter la minuterie de l'appel de Settimeout? p>
Par exemple, je voudrais mettre en pause l'appel de SetTimeOut tandis que la souris est sur la notification et continuez le comptage Down Mouseout ... P>
i Googled "Pause Settimeout" sans chance. P>
IM Effacement actuellement l'appel de Settimeout avec ClearTimeout et en même temps la notification sur la souris, mais ce serait bien d'avoir cet effet de pause. P>
Des idées? P>
3 Réponses :
Utiliser Cleartimeout () Code> sur l'événement Mouseover et utilisez
Settimeout () Code> à nouveau sur l'événement de Mouseout. P>
Essayez ceci.
Il ne serait pas trop difficile d'ajouter un (Peut ne pas être valide JS, mais il ne devrait pas être trop difficile de le faire fonctionner): P > pausableTimeout code> Classe:
function PausableTimeout(func, millisec) {
this.func = func;
this.stTime = new Date().valueOf();
this.timeout = setTimeout(func, millisec);
this.timeLeft = millisec;
}
function PausableTimer_pause() {
clearTimeout(self.timeout);
var timeRan = new Date().valueOf()-this.stTime;
this.timeLeft -= timeRan;
}
function PausableTimer_unpause() {
this.timeout = setTimeout(this.func, this.timeLeft);
this.stTime = new Date().valueOf();
}
PausableTimer.prototype.pause = PausableTimer_pause;
PausableTimer.prototype.unpause = PausableTimer_unpause;
//Usage:
myTimer = new PausableTimer(function(){alert("It works!");}, 2000);
myTimer.pause();
myTimer.unpause();
Cela n'a-t-il pas de sens, cependant, de réinitialiser la minuterie lorsque la souris est sur la notification? Je veux dire, si la minuterie est en pause à 1 milliseconde à gauche, l'utilisateur n'aura plus de temps après sa souris.
Eh bien, je n'ai pas expliqué l'ensemble du processus, mais cela ajoute du temps en fonction de la longueur du message.