检查谷歌分析是否已经(异步地)完成对我的页面的跟踪

3
如何检查Google Analytics异步代码段是否已经跟踪完网页,然后再重定向用户?
if(gaFinished())
{
    ....

“gaFinished()”应该是什么?

提前致谢。

或许如果我使用同步的Google代码,我就不必做这些事情——但是是否有最新的同步脚本(因为我找不到一个)。如果可能的话,我更喜欢这样做。

3个回答

0

_gaq数组被用作队列,即一旦操作完成,它就会从数组中删除。除了从数组中删除该项之外,当所有操作都被处理完毕时,整个数组似乎也被删除了。考虑到这一点,以下代码应该可以实现您想要的功能:

if (typeof _gaq.length == "undefined" || _gaq.length == 0)
{
    ....
}

好的,这看起来很有趣...只是想澄清一下,这会告诉我分析是否已经加载或已经加载+注册页面视图(后者是我想要的)。 - James
@James,请查看我的修订答案,了解这是如何工作的。 - Randy H.
该数组不太可能被删除,因为它可以随时用于推送事件或电子商务交易。 - Open SEO
2
它将数组转换为一个带有push方法的对象。因此,上面的代码实际上只会告诉您何时初始化跟踪代码。抱歉! - Randy H.

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>

这将仅允许脚本在完成跟踪后继续执行页面下方的操作。

0

您可以检查window['_gat']是否存在。

编辑

像Randy的解决方案一样,window['_gat']只能告诉您何时初始化跟踪代码...

另一种方法是_gaq._getAsyncTracker(),它仅在__utm.gif调用后存在。 所以您可以这样做:

var gaFinished = function(){
    try {
        var pageTracker = _gaq._getAsyncTracker();
        reutrn true;
    } catch(err) {
        return false;
    }
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接