Google Analytics(分析)JavaScript事件跟踪代码无法跟踪事件

问题描述:

我已将Google Analytics代码添加到我的网站(在PHP页面中),并且还添加了跟踪出站链接/事件的代码。代码稍微修改了一些,因为我不需要等一秒钟才能打开链接,因为它们都是在新窗口中打开的。Google Analytics(分析)JavaScript事件跟踪代码无法跟踪事件

传出链接都正常工作。

由于某些原因,事件根本没有被跟踪。

这里的标头中的分析代码:

<script type="text/javascript"> 

    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-XXXXXXX-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> 

<script type="text/javascript"> 
function recordOutboundLink(link, category, action) { 
    try { 
    var myTracker=_gat._getTrackerByName(); 
    _gaq.push(['myTracker._trackEvent', category, action]); 
    }catch(err){} 
} 
</script> 

这里是我的每一个环节上的代码:

<a href="http://sitelink.tld" target="_blank" onClick="recordOutboundLink(this, 'Outbound Links', 'http://sitelink.tld');"> 

有人可以帮助我弄清楚为什么事件会不会在“Google Analytics事件”页面上展示?

+1

你可以检查你的javascript调试输出。它可能包含一些有用的警告或错误。 – CodesInChaos 2012-02-28 09:30:45

+0

好主意,没有想到 - 我会弄清楚如何做到这一点,并尽快检查... – IsaacL 2012-02-28 14:13:42

+0

刚刚做了,它似乎与新代码正常工作,但我真的看不到任何东西与旧的代码... – IsaacL 2012-02-28 16:13:42

你混合了古老的同步语法和新的异步synteax。 你函数应该是这样的:

function recordOutboundLink(link, category, action) { 
    _gaq.push(['_trackEvent', category, action]); 
} 
+0

那我还需要接球员代码吗?我会很快尝试 - 谢谢! – IsaacL 2012-02-28 07:52:03

+0

我不使用它。我从来没有看到在这些地方出现的错误。但是,如果你愿意,随时添加它。 – Eduardo 2012-02-28 08:20:13

+0

似乎工作 - 非常感谢! – IsaacL 2012-02-28 16:12:20

这是你的代码中的拼写错误吗? var myTracker=_gat._getTrackerByName();

不宜_gat_gaq

+0

不,我相信这是正确的,并在网上快速搜索似乎验证...感谢尝试,但! – IsaacL 2012-02-28 07:40:20

我使用这个链接代码,并形成与默认跟踪代码,我得到的事件,类动作等,这只是一个有头两个字段设置元素。

onclick="_gaq.push(['_trackEvent', 'Site wide', 'Search Input']);"

给JS的时间来运行,并通过把一个setTimeout在该函数的事件发送到GA。在执行_gaq.push之前,页面正被重定向到出站链接。

function recordOutboundLink(link, category, action) { 
    _gaq.push(['_trackEvent', category, action]); 
    setTimeout('document.location = "' + link.href + '"', 100); 
} 

或者,打开一个新的窗口:

function recordOutboundLink(link, category, action) { 
    _gaq.push(['_trackEvent', category, action]); 
    setTimeout('window.open("' + link.href + '","newsite")', 100); 
} 

如果您确定跟踪器正在运行,并且有时间的新窗口中加载之前运行,那么你原来的解决方案应该工作。

+0

如上所述,由于所有链接都是在新标签页/窗口中打开,所以没有必要或不需要超时,因此在新页面打开时,跟踪代码有足够的时间在原始页面上运行,超时会导致“目标”选项不起作用。 – IsaacL 2012-02-28 14:10:14

+0

@IsaacL我添加了一个新窗口打开的例子。但是如果跟踪器有时间运行,您应该会看到结果或者至少会在[已安装GA调试版的Chrome]控制台中发送事件的跟踪器(https://chrome.google.com/webstore/detail/jnkmfdileelhofjcijamephohjechhna )。 – 2012-02-28 14:51:03

+0

我结束了使用上面的代码更改,它不需要超时,它似乎工作正常,但感谢您的帮助! – IsaacL 2012-02-28 16:12:47