2016-12-27 3 views
0

У меня есть таймер, который подсчитывает время, проведенное на странице. Я использую https://github.com/jasonzissman/TimeMe.jsКак прекратить отправку данных, когда пользователь покидает окно/вкладку?

Если пользователь покидает компьютер или меняет вкладку, таймер останавливается (чтобы правильно рассчитать потраченное время). Это отправляет серверу продолжительность каждые 5 секунд, как показано ниже.

setInterval(function() { 
    var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds(); 
    },5000); 

Моя проблема заключается в том, что если пользователь покидает компьютер или изменяет вкладку, мой сценарий будет продолжать пинговать сервер, обновляя его с тем же «timeSpentOnPage», так как он останавливается, когда вы не активны.

Я хочу прекратить отправку данных на сервер, если это произойдет.

Что такое возможный способ? Может быть, сравнить 2 разных таймера?

+0

Рассмотрим использование событий JavaScript для просто clearInterval. https://developer.mozilla.org/en-US/docs/Web/Events один из них должен соответствовать вашим потребностям – fubbe

+0

Это может помочь. http://stackoverflow.com/questions/1760250/how-to-tell-if-browser-tab-is-active/1760268#1760268 –

ответ

0

Вы можете попробовать

$(window).on("blur unload",function() { 
    TimeMe.stopTimer(); 
} 
$(window).on("focus",function() { 
    if (TimeMe) TimeMe.startTimer(); 
} 

и перед </body>

<script> 
if (TimeMe) TimeMe.startTimer(); 
</script> 
0

var anId; 
 
document.addEventListener("visibilitychange", function(evt) { 
 
    if(document.visibilityState=='hidden'){ 
 
     clearInterval(anId); 
 
    }else{ 
 
    anId = setInterval(function() { 
 
    console.log("Visible"); 
 
    var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds(); 
 
    },5000); 
 
} 
 
});

Смежные вопросы