如何跟踪网站上的时间

时间:2014-01-07 13:21:46

标签: javascript ruby-on-rails ruby coffeescript time-tracking

在我的rails应用程序中,我想跟踪个人用户在网站上花费的总时间。 我做过研究,但无法得到完美的解决方案 怎么可能。

3 个答案:

答案 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

这段代码可以工作.. ajax也可以工作......

在极端解决方案中将其存储在localstorage中(如示例中所示),然后在下次登录时执行ajax。

这项工作可以在几秒钟内为您提供准确的时间......

如果您需要大约时间,对于没有localstorage的用户每5分钟添加一次setTimeout

并更新时间,如果ajax& localstorage不起作用。


这是一个在onbeforeunload函数内部进行测试的ajax调用。

随时随地改变railsurl

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

和@YiğitcanUçum提到..

为什么不使用服务器端会话来开始和结束网站上的时间花费?

答案 1 :(得分:3)

试试这个:

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'
   });
 });

答案 2 :(得分:0)

jquery unload ()事件处理程序可用于处理这种情况,

示例:

创建服务器端脚本,例如track.php,将所有收集的跟踪详细信息保存到数据库中。

/*   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']并进行插入查询以将信息转发到数据库中。

感谢。