Google Analytics:为连接点击设定事件追踪的方法

在 Google Analytics 中,可使用 Event Tracking 功能跟踪自定义的事件。可是,若是你要跟踪的是一个连接点击,那么单纯这样写则颇有可能致使漏掉许多事件:javascript

<a href="http://www.example.com" onclick="_trackEvent('link', 'click', this.href)">Visit example.com</a>

这是由于,每次自定义事件被触发的时候,浏览器都会向 Google 的服务器发送一个请求,从而发送数据。可是点击连接会直接进入下一个页面,若是此时须要发送的请求尚未完成,浏览器就会放弃该请求而直接跳转。因此,就会致使事件没法被记录。html

解决方法

经典跟踪代码 (ga.js) 的解决方法

既然事件没有记录是由于跳转得太快,那么咱们能够经过setTimeout函数设定一个比较小的延时来给浏览器充足的时间向 Google 的服务器发送数据。通常设为 500ms 或 1000ms 就足够了,同时用户也不会察觉到。java

咱们能够把触发事件的语句包装到一个自定义函数中:浏览器

var trackOutboundLink = function(url) { _trackEvent('link', 'click', url); setTimeout("document.location='" + url + "'", 500); }

同时在 HTML 中这么写:服务器

<a href="http://www.example.com" onclick="trackOutboundLink(this.href);return false;">Visit example.com</a>

其中return false语句防止了默认行为(点击a而跳转)的发生,实际跳转由咱们本身来完成。函数

Universal Analytics (analytics.js) 的解决方法

Google 建议的方法

若是你已经升级到了 Universal Analytics,那么 Google 给出了这种状况下的官方建议。在新版的跟踪代码中,设置事件的函数包含了一个 callback,在成功设置完毕后触发。因而咱们能够把手工跳转的代码写到 callback 函数中,这样就不用显式地设置 timeout 了,同时浏览器也可以「尽快」跳转。this

一样声明一个包装函数:google

var trackOutboundLink = function(url) { ga('send', 'event', 'outbound', 'click', url, {'hitCallback': function () { document.location = url; } }); }

此次,使用了hitCallback,它所对应的函数将在成功发送事件信息后被调用。相似,HTML 代码中这么写:url

<a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com'); return false;">Check out example.com

(以上两段示例代码来自 Google 官方文档,连接见上文)spa

还能够作得更好

原本教程到这里就能够结束了,但是还有一点值得说明。上述解决方法在绝大多数状况下是彻底没有问题的,可是除了一种状况:浏览器没法正常发送事件数据到 Google 服务器。例如,若是 Google 的服务器突然「没法访问」(你懂的),或者加载analytics.js失败,那么hitCallback就将永远不会被调用。这种状况下这个连接就变成点了也没用的了。

在访问 Google 彻底没有问题的状况下,这种情形天然没必要考虑。不过为了提供最大程度的保障,能够人工加一个防护措施:

var trackOutboundLink = function(url) { var redirectTriggered = false; ga('send', 'event', 'outbound', 'click', url, {'hitCallback': function() { redirectTriggered = true; document.location = url; } }); setTimeout(function() { if (!redirectTriggered) { document.location = url; } }, 1500); }

即,在进入trackOutboundLink以后,设置 1500ms 的过时时间,若是时间到了尚未跳转,就人工跳转,保证访客能够正常访问。

原文连接:https://www.renfei.org/blog/google-analytics-event-tracking-for-links.html