这是我的GA代码:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
_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>
此代码向GA事件跟踪报告:
<li><a href="#" onClick="_gaq.push(['_trackEvent', 'SiteQA2', 'click', 'Analytics click']);" class="button button-style4 button-big">Get Started</a></li>
但是这段代码没有:
<li><a href="./page2.php?id=5" onClick="_gaq.push(['_trackEvent', 'SiteQA2', 'click', 'Analytics click']);" class="button button-style4 button-big">Get Started</a></li>
知道我做错了吗?
答案 0 :(得分:3)
并不是GA跟踪没有触发,而是数据没有被记录。
_trackEvent
通过从分析服务器请求跟踪像素来记录数据。由于该链接会在_trackEvent
调用后立即访问新页面,因此跟踪像素请求可能会被取消,从而导致无法记录任何数据。
最常见的模式是在链接到新页面之前添加一点延迟(150ms工作)。搜索“_trackEvent delay”
答案 1 :(得分:1)
我解决了这个问题。
我用一个小延迟创建了这个函数:
<script type="text/javascript">
function trackOutboundLink(link, category, action) {
try {
_gaq.push(['_trackEvent', category , action]);
} catch(err){}
setTimeout(function() {
document.location.href = link.href;
}, 100);
}
</script>
我打电话给这样的链接:
<a href="http://www.example.com" onClick="trackOutboundLink(this, 'Outbound Links', 'example.com'); return false;">
像魅力一样工作
答案 2 :(得分:1)
here来自ga团队的回答!
我对此进行了修改以获得更简单的方法:
trackBeforeHref : function(element, category, event, label) {
ga('send', 'event', category, event, label, {'hitCallback':
function () {
document.location = element.href;
}
});
},
然后您可以这样使用:
<a onclick="trackBeforeHref(this, 'a category', 'a event', 'a label'); return false;"> </a>
答案 3 :(得分:0)
利用
的事实_gaq
执行按顺序推送的任务。_gaq
:link to google developers article 所以解决问题的方法是
$("a").on("click", function(){
// stop opening the link using return false at end of this event callback function
var href = $(this).attr("href");
// pushing the track event task first and the call to open the href link so that both these tasks happen sequencially.
_gaq.push(['_trackEvent', 'click', 'some_link' ], function(){
window.location = href;
});
return false;
});