如何在调用Google Analytics功能之前确保已加载Google Analytics?

时间:2010-10-07 14:07:44

标签: javascript google-analytics load ready

在阅读博客文章后,我想到了添加安全代码以确保Google Analytics对象在调用它的函数之前已完全加载。

Typicle Google Analytics代码类似于:

var pageTracker = _gat._getTracker("X-UAXXXXX");
pageTracker._trackPageview();

pageTracker._addItem( bla bla );
pageTracker._trackTrans();

我想到了两个选项,以确保在使用前加载_gat对象:

1)使用JQuery.ready来调用_get-functions。类似的东西:

$(document).ready(function() {
    var pageTracker = _gat._getTracker("X-UAXXXXX");
    pageTracker._trackPageview();
}

2)使用JavaScript超时

function checkGat() {

    if( gat_is_ready ) {
        var pageTracker = _gat._getTracker("X-UAXXXXX");
        pageTracker._trackPageview();
    } else {
        setTimeout('checkGat()', 1000);
    }

}

checkGat()

什么是更好的解决方案?为什么?和任何其他评论?

1 个答案:

答案 0 :(得分:0)

这都是不必要的。只需使用新的Google Analytics Asynchronous Code;它为你做到了这一点。

<script type="text/javascript">

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

使用此代码,您可以根据需要在页面的早期将跟踪信息存储在JavaScript数组(称为_gaq)中。然后,只有在加载并准备好ga.js后,它才会执行对Google Analytics的调用。换句话说,它可以为您完成所有这些操作,而无需编写复杂的循环,并且您将永远不会遇到导致JavaScript错误的竞争条件。

这具有非阻塞性的附加好处,因此速度稍快。