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

时间:2010-07-08 21:38:40

标签: javascript events google-analytics tracking

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

示例事件

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

我发现我的答案看了

6 个答案:

答案 0 :(得分:4)

实施您自己的 不那么难。当事件发生时,您只需向服务器发送请求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");

(注意: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
  }
}

答案 1 :(得分:3)

如果您使用的是jQuery,则可以在$.ajaxSuccess事件

期间运行代码

答案 2 :(得分:0)

按照here!

所述使用Google Analytics和_trackPageview()

编辑:如果这不能为您提供所需的解决方案,我认为您正在寻找一种尚不存在的服务,在这种情况下,请采用Jason的$.ajaxSuccess()建议并制作您的自己的。

答案 3 :(得分:0)

这就是我要找的,不幸的是,这不是免费的,但我希望我能找到一个。

http://mixpanel.com

答案 4 :(得分:0)

答案 5 :(得分:0)

如果有人还在寻找,我很高兴使用Piwik作为开源替代方案。

对于跟踪事件,有一个很好的JavaScript客户端,some documentation

对于事件跟踪,我在需要时使用这个普通函数:

_paq.push( [ 'category', 'action', 'name', 'value' ] );

然后,如果您在服务器上托管Piwik,则可以从Piwik的Web视图中导出所有数据或直接查询数据库以检索信息。