我已经实现了几乎标准的例子:
<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-mycode']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<script>
function recordOutboundLink(link, category, action) {
try {
var myTracker=_gat._getTrackerByName();
_gaq.push(['myTracker._trackEvent', category , action ]);
setTimeout('document.location = "' + link.href + '"', 100)
}catch(err){}
}
</script>
并且链接有这个onclick事件:
<a id="latestDownload" href="https://example.com" onClick="recordOutboundLink(this, 'newDownloads', 'latest');return false;">Download latest version</a>
过去3天没有跟踪任何事件,这对我来说听起来不对。我已经使用用于chrome的GA调试插件测试了该页面,其中显示了事件已发送。
我在这里犯了一些错误吗?
编辑:
页面是: refreshless.com/nouislider/download/
编辑2:
Google GA调试插件显示(字面意思,没有混淆):
Account ID : UA-XXXXX-X
&utmac=UA-XXXXX-X
我是否需要再次推送'_setAccount'?
答案 0 :(得分:4)
tl; dr ...省略_getTrackerByName()
来电,只需使用
_gaq.push(['myTracker._trackEvent', category , action ]);
更长的解释:异步跟踪允许使用类似
的语法将命令推送到多个跟踪器(请参阅Tracking Basics)_gaq.push(['_setAccount', 'UA-XXXXX-1']);
_gaq.push(['_trackPageview']);
_gaq.push(['b._setAccount', 'UA-XXXXX-2']);
_gaq.push(['b._trackPageview']);
_gaq.push(['myTracker._trackEvent', category , action ]);
代码假设您已经初始化了myTracker
,就像上面的b
跟踪器一样。
由于myTracker
从未设置过accountId,因此会在调试时显示UA-XXXXX-X
accountId。
Specialized Tracking/Outbound Links上的分析代码错误,或仅在名为myTracker
的设置代码时才有效。
答案 1 :(得分:2)
myTracker
是一个变量,所以你不能在字符串中真正引用它。以下应该工作:
_gaq.push(['_trackEvent', category , action ]);
答案 2 :(得分:0)
setTimeout对我来说似乎有点危险 - 它假设Google Analytics调用是在100毫秒内完成的。
我更喜欢这个:
function trackOutboundLink(url) {
_gaq.push(['_trackEvent', 'outbound', 'click']);
_gaq.push(function() {
window.location = url;
});
}
这会将重定向排队,直到Google Analytics异步调用完成为止。
挂钩:
<a href="#" onclick="trackOutboundLink('your-url');return false;">Link</a>