实时 Javascript 事件跟踪(Javascript 统计)

Ogu*_*gic 5 javascript events tracking google-analytics

网络上有很多实时网络统计服务(w3counter-histats-gostats)。它们只在请求页面时计数一次,但我想做的是跟踪javascript函数/事件,因为我的网站是完全ajax的。所以我想要类似谷歌分析的事件跟踪器(http://code.google.com/intl/en/apis/analytics/docs/gaJS/gaJSApiEventTracking.html),但实时,而且非常简单。它可以托管或只是一个 php 脚本。谢谢。

示例事件

  • 用户创建了一些东西
  • 用户删除了某些内容
  • ajax发生错误
  • 浏览器发生错误
  • 用户已登录

我找到了我的答案,看看

gbl*_*zex 6

实现你自己的并不。当事件发生时,您只需向服务器发送请求,例如: ,等。tracker.gif?action=create&what=sthtracker.gif?action=error&what=k_is_undefined

然后您解析服务器日志 以获取统计信息。(或者您通过以下方式将您的请求直接发送到数据库中tracker.php?action=create&what=sth

由于您控制了站点,现在当用户登录或 ajax 请求失败时可以轻松发出这些请求。

对于错误处理,您可以使用window.onerror

// send a request about an event to the server
function fireEvent(action, message, options) {
  var loggerUrl = "/tracker.gif", parameters;
  options = options || {};
  options.url = options.url || window.location.href;
  options.user_agent = navigator.userAgent;
  options.message = message;
  for (var i in options) {
    if (options.hasOwnProperty(i)) {
      parameters += "&" + i + "=" + encodeURIComponent(options[i]);
    }
  }    
  new Image().src = loggerUrl + parameters;
}

// log script errors
window.onerror = function(errorMessage, url, line) {   
  fireEvent("error", errorMessage, {
    url: url, 
    line: line
  });
  return true;
};

// example event on the page
fireEvent("ajaxError", "XY page failed to load");
Run Code Online (Sandbox Code Playgroud)

(注意:window.onerror在 Safari 中不可用)


更新

这是 PHP 解析器的概念证明:

$i = 1;
$d = file_get_contents("log.txt");
$requests = explode("\n", $d);
foreach ($requests as $req) {
  $pos = strpos($req, "tracker.gif");
  if ($pos === false) continue;
  $start_pos = strpos($req, "?", $pos);
  $end_pos = strpos($req, " ", $start_pos); // can also be " HTTP"
  $length = $end_pos - $start_pos;
  $req = substr($req, $start_pos+1, $length);
  $exprs = explode("&", $req);
  echo $i . ".<br>"; // request number
  $i += 1;
  foreach ($exprs as $expr) {
    list($name, $value) = explode("=", $expr);
    echo $name . " =>" . $value . "<br>"; // key => value
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 谷歌分析实际上也做了同样的事情。有趣意味着你想尝试一下? (2认同)

Jas*_*son 5

如果您使用 jQuery,则可以在$.ajaxSuccess活动期间运行代码

  • 怎么不相关呢?我不知道你正在使用什么统计跟踪程序。我只是为您提供了一种运行代码来跟踪事件发生的方法。如果你问我的话,这是完全相关的。 (3认同)
  • 它是相关的,一个自己动手的解决方案。 (3认同)
  • @oguz当然你没有问如何检测ajax成功。这将是一个愚蠢的、自我回答的问题。你问“我的页面是ajax。我需要一种方法来跟踪点击率。我该怎么做?” 我回复道:“在 ajaxsuccess 事件期间运行您的点击跟踪代码”。我不会一步步告诉您如何跟踪您自己的分析!我怎么知道你的数据库等信息? (2认同)