8
votes

Comment mettre en pause un appel de sécurité?

Dupliqué possible:
JavaScript: Pause Settimeout ();

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.

Comment puis-je arrêter la minuterie de l'appel de Settimeout?

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 ...

i Googled "Pause Settimeout" sans chance.

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.

Des idées?


2 commentaires

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.


3 Réponses :


4
votes

Utiliser Cleartimeout () sur l'événement Mouseover et utilisez Settimeout () à nouveau sur l'événement de Mouseout.

http://www.w3schools.com/jsref/met_win_cleartimeout.asp


0 commentaires

11
votes

Essayez ceci. XXX


0 commentaires

7
votes

Il ne serait pas trop difficile d'ajouter un pausableTimeout code> Classe:

(Peut ne pas être valide JS, mais il ne devrait pas être trop difficile de le faire fonctionner): P >

    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();


0 commentaires