2
votes

Comment afficher une fenêtre contextuelle après 10 secondes d'inactivité

Je souhaite afficher une alarme de prix après 10 secondes d'inactivité de l'utilisateur. À l'heure actuelle, la fenêtre contextuelle n'apparaît qu'au clic. Je veux le remplacer.

J'ai fait de mon mieux mais je n'ai pas pu le faire.

$(document).ready(function () {
  var idleInterval = setInterval(inActiveTimer, 1000);
  $(this).mousemove(function (e) {
    idleTime = 0;
  });
  $(this).keypress(function (e) {
    idleTime = 0;
  });
  $(".sleepy-close, .sleepy-overlay, .sleepy-wake-up").click(function () {
    $(".sleepy-overlay").hide();
    clearInterval(idleInterval);
  });
});

La dernière partie du code conduit à cliquer sur la fenêtre contextuelle activée. Comment puis-je le remplacer par une fenêtre contextuelle automatique qui se produit après 10 secondes d'inactivité.


4 commentaires

Que définissez-vous par «inactivité»? 10 secondes sans événement?


Duplication possible avec stackoverflow .com / questions / 667555 /…


Vérifiez mon code ci-dessous, cela pourrait vous aider mon frère.


renvoyer l'url. il s'agit d'un stackoverflow .com / questions / 667555 /…


4 Réponses :


0
votes

Pour réinitialiser un setInterval , vous devez l'effacer et le redéfinir. Utilisez le code suivant:

// Instead of idleTime = 0
clearInterval(idleInterval);
idleInterval = setInterval(inActiveTimer, 10000);

Consultez cette réponse pour plus d'informations


0 commentaires

0
votes

Essayez ceci.

 var idleTime = 0;

 $(document).ready(function () {

  var idleInterval = setInterval(function(){ 
      if(idleTime >= 10){
        $(".sleepy-overlay").hide(); // enabling the popup 
        idleTime = 0;
      }else{ 
        idleTime++;
      } 
    }, 1000); 

  $(this).mousemove(function (e) {
   idleTime = 0;
  });

  $(this).keypress(function (e) {
   idleTime = 0;
  });

});


0 commentaires

0
votes

Approche JavaScript pure

Vous pouvez garder un minuteur pendant 10 secondes en utilisant setTimeout et l'effacer chaque fois que leur activité est et le redémarrer immédiatement.

var timeout;

function resetTimer(){
  clearTimeout(timeout);
  console.log("Clearing timer because of activity");
  timeout = setTimeout(function(){
    alert("Done with 10 Seconds!");
    //Trigger your popup here
  }, 10000);
}

document.onmousemove = resetTimer;
document.onkeypress = resetTimer;
//You can add more activity event listeners like click etc.


0 commentaires

1
votes

cela vous aidera à capturer 10 secondes d'inactivité à l'écran, changez le code selon vos besoins.

document.body.innerText = "hello count the seconds";
setIdleTimeout(10000, function() {
    document.body.innerText = "Where did you go?";
}, function() {
    document.body.innerText = "Welcome back!";
});



function setIdleTimeout(millis, onIdle, onUnidle) {
    var timeout = 0;
    startTimer();

    function startTimer() {
        timeout = setTimeout(onExpires, millis);
        document.addEventListener("mousemove", onActivity);
        document.addEventListener("keypress", onActivity);
    }
    
    function onExpires() {
        timeout = 0;
        onIdle();
    }

    function onActivity() {
        if (timeout) clearTimeout(timeout);
        else onUnidle();
        //since the mouse is moving, we turn off our event hooks for 1 second
        document.removeEventListener("mousemove", onActivity);
        document.removeEventListener("keypress", onActivity);
        setTimeout(startTimer, 1000);
    }
}


0 commentaires