检查Google Analytics是否已(异步)完成跟踪我的页面
问题描述:
如何在我(例如)重定向用户之前检查Google Analytics异步代码段是否已完成跟踪网页?检查Google Analytics是否已(异步)完成跟踪我的页面
if(gaFinished())
{
....
gaFinished()
应该是什么?
在此先感谢。
或者,如果我使用的是同步Google代码,则不需要执行任何操作 - 但是有没有最新的同步脚本(因为找不到一个)。我宁愿这样做是可能的。
答
_gaq数组被用作队列,即一旦动作被执行,它就从数组中移除。除了从数组中移除项目外,看起来整个数组都会在处理完所有操作后被删除。考虑到这一点,下面的代码应该做你要找的内容:
if (typeof _gaq.length == "undefined" || _gaq.length == 0)
{
....
}
答
在我使用谷歌提供和支持的(旧)同步段结束:
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("UA-xxxxxx-x");
pageTracker._trackPageview();
} catch(err) {}
</script>
这将只允许脚本在完成跟踪后在页面的下方执行。
答
您可以检查是否存在window['_gat']
。
编辑
像兰迪解决方案,window['_gat']
只能告诉你,当跟踪代码已被初始化...
的另一种方法是_gaq._getAsyncTracker()
,即__utm.gif电话后只existe。 所以,你可以这样做:
var gaFinished = function(){
try {
var pageTracker = _gaq._getAsyncTracker();
reutrn true;
} catch(err) {
return false;
}
};
好吧,这看起来很有趣......我只想澄清,这会告诉我,如果分析已加载或已装+注册浏览量(后者是我所追求的)。 – James 2012-03-28 21:40:40
@詹姆斯,请看我修改后的答案,以解释它是如何工作的。 – 2012-03-28 21:42:47
该阵列不可能被删除,因为它可以随时用于推送事件或电子商务交易。 – 2012-03-29 14:19:46