Google Analytics JavaScript事件跟踪程序代码不跟踪事件

Google Analytics JavaScript事件跟踪程序代码不跟踪事件,javascript,google-analytics,Javascript,Google Analytics,我在我的网站上添加了谷歌分析代码(在PHP页面中),我还添加了跟踪出站链接/事件的代码。代码稍微修改了一下,因为我不需要在打开链接之前等待一秒钟,因为它们都是在新窗口中打开的 传出链接均正常工作 但出于某种原因,这些事件根本没有被追踪 以下是标题中的分析代码: <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXXXX-X']); _gaq.pu

我在我的网站上添加了谷歌分析代码(在PHP页面中),我还添加了跟踪出站链接/事件的代码。代码稍微修改了一下,因为我不需要在打开链接之前等待一秒钟,因为它们都是在新窗口中打开的

传出链接均正常工作

但出于某种原因,这些事件根本没有被追踪

以下是标题中的分析代码:

<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>

var _gaq=_gaq | |[];
_gaq.push(['''u setAccount','UA-XXXXXXX-X']);
_gaq.push([''u trackPageview']);
(功能(){
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);
})();
函数recordOutboundLink(链接、类别、操作){
试一试{
var myTracker=_gat._getTrackerByName();
_gaq.push(['myTracker._trackEvent',category,action]);
}捕获(错误){}
}
以下是我在每个链接上的代码:

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


有人能帮我弄清楚为什么这些事件不会出现在Analytics events页面上吗?

这是您代码中的一个输入错误吗<代码>var myTracker=_gat._getTrackerByName()


\u gat
不应该是
\u gaq

这是您代码中的输入错误吗<代码>var myTracker=_gat._getTrackerByName()


不应该是
\u gat
\u gaq

我在链接和表单元素上使用此代码,并使用默认跟踪代码获取事件、类别动作等。此代码只设置了前两个字段


onclick=“\u gaq.push”([''u trackEvent','Site wide','Search Input'])”

我在链接和表单元素上使用此代码,并使用默认跟踪代码获取事件、类别动作等。此代码只设置了前两个字段


onclick=“\u gaq.push”([''u trackEvent','Site wide','Search Input'])”

您将旧的同步语法和新的异步语法混为一谈。 您的函数应该如下所示:

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

您将旧的同步语法和新的异步synteax混为一谈。 您的函数应该如下所示:

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

通过在函数中放入
setTimeout
,为js提供运行时间并将事件发送给GA。在执行
\u 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);
}

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

通过在函数中放置一个
setTimeout
,为js提供运行时间并将事件发送给GA。在执行
\u 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);
}


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

不,我相信这是正确的,在网上快速搜索似乎可以验证。。。谢谢你的尝试!不,我相信这是正确的,在网上快速搜索似乎可以验证。。。谢谢你的尝试!那么我还需要catcherr代码吗?我很快就会试试的-谢谢!我不用它。我从来没有看到这些地方出现错误。但是,如果你想的话,可以随意添加。看起来很有效-非常感谢!那么我还需要catcherr代码吗?我很快就会试试的-谢谢!我不用它。我从来没有看到这些地方出现错误。但是,如果你想的话,可以随意添加。看起来很有效-非常感谢!你能检查你的javascript调试输出吗。它可能包含一些有用的警告或错误。好主意,我没有想到-我会想出如何做到这一点,并很快检查…只是做了,它似乎与新代码正常工作,但我真的看不到任何与旧代码…你能检查你的javascript调试输出。它可能包含一些有用的警告或错误。好主意,我没有想到-我会想出如何做到这一点,并很快检查…只是做了,它似乎与新代码正常工作,但我不能真正看到任何与旧代码…如上所述,超时是不必要的,或想要的,因为所有链接都是在新的选项卡/窗口中打开的,所以在打开新页面时,跟踪代码有足够的时间在原始页面上运行,超时将导致“目标”选项无效。@IsaacL I添加了一个新窗口打开的示例。但是,如果跟踪程序有时间运行,您应该会看到结果,或者至少会看到在控制台中发送事件的跟踪程序。我最终使用了上面的代码更改,它不需要超时,而且似乎工作正常,但感谢您的帮助!如上所述,超时是不必要的,或者不需要的,因为所有链接都是在新的选项卡/窗口中打开的,因此在打开新页面时,跟踪代码有足够的时间在原始页面上运行,超时会导致“目标”选项没有任何效果。@IsaacL我添加了一个新窗口打开的示例。但是,如果跟踪程序有时间运行,您应该会看到结果,或者至少会看到在控制台中发送事件的跟踪程序。我最终使用了上面的代码更改,它不需要超时,而且似乎工作正常,但感谢您的帮助!