【问题标题】:How to track time spent on Web Site [closed]如何跟踪在网站上花费的时间[关闭]
【发布时间】:2014-01-25 04:50:07
【问题描述】:

在我的 rails 应用程序中,我想跟踪单个用户在站点上花费的总时间。 我对此进行了研究,但无法获得完美的解决方案。
怎么可能。

【问题讨论】:

  • 如何获取窗口关闭的时间。

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


【解决方案1】:

类似的东西?

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 也可以正常工作...

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

这可以为您提供以秒为单位的确切时间...

如果您想要大约时间并且对于没有本地存储的用户,请每 5 分钟添加一次 setTimeout

如果 ajax 和本地存储不起作用,则更新时间已过。


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

随心所欲地更改railsurl

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

正如@Yiğitcan Uçum 提到的那样......

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

【讨论】:

  • 这一切都很好,但你要如何将它发送到其他地方?例如,您不能执行 AJAX 请求,因为窗口会在完成之前关闭。
  • window.onbeforeunload 函数在表单提交时调用该函数
  • 我的主要问题是 AJAX 调用,有没有其他方法可以做到这一点。
  • 你测试过ajax吗? localstorage 是最直接的解决方案,并且每次都有效。我在某些脚本上将它与 onbeforeunload 一起使用,从未遇到过问题。我个人没有测试 ajax .. 但快速 XmlHttpRequest 也可以正常工作。你只需要发送一个小字符串
  • 如果你想要我为你添加一个适当的 ajax 调用......不使用 jquery obiovsly
【解决方案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'
   });
 });

【讨论】:

  • 我用过:javascript:window.onbeforeunload = function()
【解决方案3】:

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

示例:

创建一个服务器端脚本,比如 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'] 并进行插入查询以将信息传递到数据库中。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多