ここに実例があります。 Peterの答えとは異なり、ユーザーがウィンドウ/タブを閉じるとカウントが停止します。
var timer;
var timerStart;
var timeSpentOnSite = getTimeSpentOnSite();
function getTimeSpentOnSite(){
timeSpentOnSite = parseInt(localStorage.getItem('timeSpentOnSite'));
timeSpentOnSite = isNaN(timeSpentOnSite) ? 0 : timeSpentOnSite;
return timeSpentOnSite;
}
function startCounting(){
timerStart = Date.now();
timer = setInterval(function(){
timeSpentOnSite = getTimeSpentOnSite()+(Date.now()-timerStart);
localStorage.setItem('timeSpentOnSite',timeSpentOnSite);
timerStart = parseInt(Date.now());
// Convert to seconds
console.log(parseInt(timeSpentOnSite/1000));
},1000);
}
startCounting();
あなたは、ウィンドウ/タブがアクティブでないとき、タイマーを停止したい場合は、以下のコードを追加します。
var stopCountingWhenWindowIsInactive = true;
if(stopCountingWhenWindowIsInactive){
if(typeof document.hidden !== "undefined"){
var hidden = "hidden",
visibilityChange = "visibilitychange",
visibilityState = "visibilityState";
}else if (typeof document.msHidden !== "undefined"){
var hidden = "msHidden",
visibilityChange = "msvisibilitychange",
visibilityState = "msVisibilityState";
}
var documentIsHidden = document[hidden];
document.addEventListener(visibilityChange, function() {
if(documentIsHidden != document[hidden]) {
if(document[hidden]){
// Window is inactive
clearInterval(timer);
}else{
// Window is active
startCounting();
}
documentIsHidden = document[hidden];
}
});
}
JSFiddle
をセッション変数を使用し、それはすべてのページで共有されます。 – Barmar
純粋なjavascriptのソリューションでは、更新された答えを試してください...コーヒーはうまく働いた...さらに@Barmarはポイントがあります。つまり、あなたのケースでは、私はブラウザでjavascriptが無効になっている場合に備えて、セッションvarに基づいて同様のサーバサイドを作成しようとします。 (それはどれくらいの頻度です!!!)。 –