为什么Google Analytics不会跟踪任何活动?

时间:2012-04-18 06:15:42

标签: javascript google-analytics

我已经实现了几乎标准的例子:

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

3 个答案:

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