2017-02-21 2 views
0

Я хочу отображать баннер предложений, когда пользователь простаивает таймаут 5 секунд, однако следующий код показывает баннер объявления каждые 5 секунд бездействия. Но я хочу выполнить следующую функцию только один раз для первого простоя 5 seconds.Any тело помочь мнеВыполнить функцию только один раз для тайм-аута простоя пользователя

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

      } 

     }); 
+0

хода в случае (бездействия ...) внутри doPreload .. Я думаю, вы не можете проверить переменную idleTime внутри таймера, потому что закрытие. – Max

ответ

1

вам нужно использовать setTimeout вместо setInterval

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

это будет выполняться только один раз.

+0

Даже это не работает – Nageswar

+0

Вы могли бы создать JSFiddle или plunkr, чтобы я мог проверить. –

+0

wait, я добавлю и дам вам знать – Nageswar

0

Почему бы вам не попробовать setTimeout вместо setInterval?

+0

Это должен быть комментарий, а не ответ. –

+0

Я не могу комментировать, нужно 50 rep :) – Sooraz

0

вы используете только мышь двигаться, что если пользователь работает с клавиатурой, вы должны проверить, что также

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 
} 
}; 
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. 
    */ 
Смежные вопросы