【问题标题】:Track time spent on site跟踪在网站上花费的时间
【发布时间】:2015-02-23 07:39:13
【问题描述】:

我想跟踪经过身份验证的用户在我的网站上花费的时间。

为此,我已将此代码放在我的布局中:

  function js_yyyy_mm_dd_hh_mm_ss (param) {
        now = new Date(param);
      year = "" + now.getFullYear();
      month = "" + (now.getMonth() + 1); if (month.length == 1) { month = "0" + month; }
      day = "" + now.getDate(); if (day.length == 1) { day = "0" + day; }
      hour = "" + now.getHours(); if (hour.length == 1) { hour = "0" + hour; }
      minute = "" + now.getMinutes(); if (minute.length == 1) { minute = "0" + minute; }
      second = "" + now.getSeconds(); if (second.length == 1) { second = "0" + second; }
      return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
    }
    var start;



    $(document).ready(function() {
       var d = new Date();
       start = d.getTime();
    });
    <% if current_user %>
      $(window).on('beforeunload', function() {
        var d = new Date();
        end = d.getTime();
        timeSpent = (end-start)/1000;
        page = window.location.toString();
        debut=js_yyyy_mm_dd_hh_mm_ss(start);
        fin=js_yyyy_mm_dd_hh_mm_ss(end);

        $.ajax('<%= users_time_path %>', {
          async: false,
          type: 'POST',
          data: {log_time:{start:debut, end: fin, timespent: timeSpent, page:page}},
          success: function(res,status) { },
          error: function (res, status) {
                console.log('Server error: '+ status);
          }
      });
      <% end %>

      });

但是如果用户打开了两个标签页,那么使用这段代码我会计算两次。

此外,如果用户在打开选项卡的情况下离开这台计算机并在两天后回来,我将计算超过 48 小时...

我应该怎么做才能避免这种情况?

我怎样才能在服务器端避免用户假时间?

谢谢

【问题讨论】:

  • 如何使用谷歌分析来实现这些跟踪功能
  • 您可以在选项卡模糊时向您的服务器发送 ping,然后您可以将其视为关闭选项卡。除了最后一页,总时间是页面服务之间所用时间的总和......
  • @dandavis 我在下面添加了一个答案,它通过 JS 库本地执行此操作,用于处理页面模糊/卸载/页面隐藏事件等事件。

标签: javascript ruby-on-rails


【解决方案1】:

每1-5分钟调用一次服务器(ajax之类的),在php中你有一个会话和来自客户端的ip,你可以使用booth来跟踪和识别用户。

一些链接:

为了您的虚假保护:

在没有 mousemove 或其他东西的情况下 1 分钟后停止调用服务器...

【讨论】:

    【解决方案2】:

    您可以为此使用timeonsite tracker,它可以在本地捕获经过身份验证的用户,并具有以下其他好处:

    • 网站捕获的多标签时间
    • 经过身份验证的/匿名用户
    • 页面上的清洁时间和每次网页浏览的网站上的时间
    • 支持所有主要的网络和移动浏览器,包括 iPhone、Ipad、Safari 或 Opera
    • 基于站点时间间隔的域/页面 URL
    • 单页应用程序在站点跟踪和 更多。

    由于纯 JS 代码易于使用。它也可以在 CDNjsJSDeliver 中找到,以便快速集成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 2012-08-19
      • 2017-04-13
      • 1970-01-01
      相关资源
      最近更新 更多