2016-10-31 92 views
1

我想跟蹤用戶在他的所有頁面上在我的項目網站上花費的秒數,爲此我想使用JavaScript會話Cookie。
這是因爲我將使用Github Pages託管它,因爲我無法訪問PHP,也因爲我想嘗試使用JS cookie(這是我第一次這樣做)。
計數秒我使用如下:如何在JavaScript會話cookie中存儲變量?

var time_spent = 0; 
setInterval(function(){ 
    ++time_spent; 
    $('#counter_container span').html(time_spent); 
}, 1000); 

上面的代碼工作,其中計數器,但如預期的那樣正在重置每次我改變頁面的時間。
我以下列方式使用JS-的cookie庫(https://github.com/js-cookie/js-cookie)嘗試:

Cookies.set('time_spent', time_spent); 
var counted_time = Cookies.get('time_spent'); 
console.log(counted_time); 

counted_time變量總是「未定義」無論我試過。
爲了解決這個小問題,我真的會讚賞我所能得到的任何指導。

+0

FYI:setTimeout的是不跟蹤時間的好方法。爲什麼它不起作用,當你更新值時,你在哪裏設置cookie? – epascarello

+3

我不會爲此使用計時器。相反,嘗試在用戶輸入頁面時設置時間戳,然後'onbeforeunload'獲取持續時間並將其添加到存儲在cookie中的值。 –

+0

[設置cookie並使用JavaScript獲取cookie](http:// stackoverflow。 com/questions/14573223/set-cookie-and-get-cookie-with-javascript) –

回答

2

我不會爲此使用計時器。相反,請嘗試在用戶進入頁面時設置時間戳,然後onbeforeunload獲取持續時間並將其添加到存儲在cookie中的值。事情是這樣的:

var load = new Date(); 

window.onbeforeunload = function() { 
    var leave = new Date(); 
    var duration = leave.getTime() - load.getTime()/1000; 
    var counted_time = parseFloat(Cookies.get('time_spent')) || 0; 
    Cookies.set('time_spent', counted_time + duration); 
} 

Working example

+0

謝謝你的答案,特別是對於工作的例子。我能夠在你的幫助下完成我的工作,並在途中學習一些新的東西。 – MariusNV