2016-12-27 48 views
0

我有一個計時器,用於統計頁面上的時間。我正在使用https://github.com/jasonzissman/TimeMe.js如何在用戶離開窗口/標籤時停止發送數據?

如果用戶離開計算機或更改選項卡,計時器將停止(以便正確計算所花費的時間)。 這樣,如下所示,每5秒向服務器發送持續時間。

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

我的問題是,如果用戶離開電腦,或更改標籤,我的腳本將繼續ping服務器,具有相同的「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); 
 
} 
 
});

相關問題