2014-01-07 71 views
3

在我的Rails應用程序中,我想跟蹤個人用戶在網站上花費的總時間。 我做了研究,但不能得到完美的解決方案。
這怎麼可能。如何跟蹤在網站上花費的時間

+0

我怎樣才能得到窗戶關閉的時間。 –

回答

5

這樣的事情?

var time,timeSite; 
window.onload=function(){ 
time=new Date(); 
} 


window.onbeforeunload=function(){ 
timeSite=new Date()-time; 
window.localStorage['timeSite']=timeSite; 
//store it with whatever serverside language. 
} 

如果您想了解更多添加window.onblur

此代碼的工作..也阿賈克斯將prolly工作...

在極端的解決方案存儲它的localStorage(比如上例中),然後在下一次登錄做ajax。

這工作讓你在幾秒鐘的確切時間......如果你想約時間

並沒有localStorage的加setTimeout的每5分鐘

和更新時間過去了,如果阿賈克斯誰的用戶& localstorage不起作用。


這裏是一個ajax調用來測試onbeforeunload函數內部。

更改railsurl whith無論你需要什麼。

var x=new XMLHttpRequest;x.open('get','railsurl?time='+timeSite);x.send(); 

和@YiğitcanUçum提到..

爲什麼不直接使用服務器端的會話開始和結束在網站上的時間花費?

+0

這一切都很好,但你將如何將它發送到別的地方?例如,您不能在窗口完成之前關閉AJAX請求。 –

+0

window.onbeforeunload函數在提交表單時調用函數 –

+0

我的主要問題是AJAX調用,有沒有其他方法可以做到這一點。 –

2

試試這個:

var time,timeSite; 

    window.onload = function(){ 
    time = new Date(); 
} 


    $(window).unload(function() { 
    timeSite = new Date() - time; 
    $.ajax({ 
    type: 'GET', 
    async: false, 
    data: {timespent: timeSite}, 
    url: '/url/to/rails.com' 
    }); 
}); 
+0

我用過:javascript:window.onbeforeunload = function() – marimaf

0

的jQueryunload()事件處理程序可以用來處理這種情況,

例子:

創建一個服務器端腳本說track.php保存所有收集的跟蹤附件ls到分貝。

/* Assuming you are tracking authenticated users the */ 

在Javascript中:

var loggedInAt; 
var loggedOutAt; 

var userId = getUserId(); 

function getUserId() { 
return userId; // Define a mathod for getting the user if from a cookie or any local variables. 
} 

function getTotalTimeSpent() { 
return (loggedOutAt - loggedInAt); 
} 

$(document).ready(function() { 
    loggedInAt = Date.getTime(); // get the start time when the user logged in 

    $(window).unload(function() { 
     loggedOutAt = Date.getTime(); 
     totalTimeSpent = getTotalTimeSpent(loggedOutAt, loggedInAt); 
     $.ajax({ 
     url: "www.yoursite.com/track.php", 
     method:post, 
     data: {'TotalTimeSpent': totalTimeSpent, 'UserId' : userId} 
     }) 
    }); 
} 

在tracking.php:

得到變量$_REQUEST['TotalTimeSpent'] & $_REQUEST['UserId']並插入查詢信息中繼到數據庫。

謝謝。