Google分析 - 在_setAccount之前_trackEvent?订单有关系吗?

时间:2013-02-02 19:51:38

标签: google-analytics

所以这会奏效:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-65432-1']);
_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);
})();

_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);

但是如果访问者可以通过http://example.com?autoPlay=Wind之类的链接来访问该怎么办?那么视频已经被请求,并开始播放,生成:

var _gaq = _gaq || [];
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);

事件。但是常规跟踪代码仍然在页面底部运行,这就是为什么我们有异步:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-65432-1']);
_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);
})();

所以我必须至少将_setAccount移到顶部,或者在我呼叫ga.js时它是否已经在队列中?或者我可以创建自己的队列......但是在这里,我发现they made sure如果_gaq之前已经存在某些内容,则{{3}}不删除_setAccount的线索。并且还有针对不同情境的多个跟踪器... 这是否意味着完全忽略该命令是完全合法的?对于这个简单的问题很抱歉,但是我对async允许的内容一无所知什么不是。

感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

在任何记录数据的命令之前,您必须拥有_setAccount,例如_trackPageview_trackEvent

如果您查看_trackEvent尚未运行时_setAccount发送的跟踪像素,您会看到它会记录到默认帐户,例如UA-XXXXX-X

我在开发或临时系统上使用过这个,我希望运行分析代码,但不希望它污染生产跟踪数据。注释掉_setAccount行,所有数据最终都会记录到不存在的帐户中。


假设您从未初始化名为“mumble”的跟踪器(使用_gaq.push(['mumble._setAccount', 'UA-65432-1']),则以下代码显示未启动的跟踪器的ID为“UA-XXXXX-X”:

echo(_gat.getTrackerByName('mumble')_getAccount())

答案 1 :(得分:2)

现在它确实:

var _gaq = _gaq || [];
if(_gaq.unshift){
    _gaq.unshift(['_setAccount', 'UA-65432-1']);
} else {
    _gaq.push(['_setAccount', 'UA-65432-1']);
}
_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);
})();

所以解决方案是,虽然push附加到数组的末尾,而unshift一直这样做。

问题可能是iframe ga 已加载,然后它不是数组,而是具有自定义push方法的对象。在这种情况下,让我们回到原始代码。在您自己的主页中,帐户ID是相同的,无论如何都可以。