4

所以这将起作用:

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']);

事件。但是常规的跟踪代码仍然在页面底部运行,这就是我们使用 async 的原因:

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吗?或者我可以自己制作队列......但在这里我看到一个线索,如果他们之前已经有东西,他们确保不会删除。并且还有针对不同上下文的多个跟踪器......那么这是否意味着完全忽略订单是完全合法的?很抱歉这个简单的问题,但我完全找不到异步允许的内容和不允许的内容。_gaq_setAccount

感谢帮助!

4

2 回答 2

5

您必须_setAccount在任何记录数据的命令之前使用,例如_trackPageviewor _trackEvent

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

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


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

echo(_gat.getTrackerByName('mumble')_getAccount())
于 2013-02-03T04:21:51.453 回答
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);
})();

所以解决方案是 whilepush追加到数组的末尾,而追加到unshift开头。

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

于 2013-02-10T02:57:00.223 回答