仅对用户空闲超时执行一次功能

时间:2017-02-21 11:33:58

标签: javascript jquery

我希望在用户空闲超时5秒时显示提供横幅,但是下面的代码每隔5秒钟显示一次提供横幅。但是我想在第一次空闲5秒时执行以下功能一次。任何身体帮助我< / p>

$(document).ready(function(){

           idleTime = 0;        


           //Increment the idle time counter every five second.
           var idleInterval = setInterval(timerIncrement, 5000);

           function timerIncrement()
           {
             console.log(idleTime++);
             if (idleTime > 5)
             {
               doPreload();     

             }
           }

           //Zero the idle timer on mouse movement.
           $(this).mousemove(function(e){

                 idleTime = 0;

           });

           function doPreload()
           {
             $('#add-click').click();

           }   

        });

4 个答案:

答案 0 :(得分:2)

你只使用鼠标移动如果使用键盘的用户你必须检查

var inactivityTime = function () {
var temp;
window.onload = resetTimer;
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;

function resetTimer() {
    clearTimeout(temp);
    temp = setTimeout(logout, 3000)
    // 1000 milisec = 1 sec
 }
};

答案 1 :(得分:1)

您需要使用setTimeout代替setInterval

    window.setTimeout(function(){
        timerIncrement();
}, 5000);

这只会执行一次。

答案 2 :(得分:0)

为什么不尝试setTimeout而不是setInterval?

答案 3 :(得分:0)

将此函数中的逻辑更正为:

var idleInterval = setInterval(timerIncrement, 1000);
  function timerIncrement() {
    console.log(idleTime++);
    if (idleTime == 5) {
        doPreload();
        idleTime = 0;   // reset idleTime variable     
      }
  }

   /** This will increase counter by one every second,
    *  and if counter reaches to 5 then call to banner
    *  display and reset counter. 
    */