Javascript 如何确保在调用Google Analytics';s函数?

Javascript 如何确保在调用Google Analytics';s函数?,javascript,google-analytics,load,ready,Javascript,Google Analytics,Load,Ready,在读了一篇博客文章后,我想到了添加安全代码的想法,以确保在调用Google Analytics的功能之前,Google Analytics对象已完全加载 Typicle Google Analytics代码类似于: var pageTracker = _gat._getTracker("X-UAXXXXX"); pageTracker._trackPageview(); $(document).ready(function() { var pageTracker = _gat._get

在读了一篇博客文章后,我想到了添加安全代码的想法,以确保在调用Google Analytics的功能之前,Google Analytics对象已完全加载

Typicle Google Analytics代码类似于:

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

我想到了两个选项来双重确保在使用之前加载_gat-object:

1) 使用JQuery.ready调用_get-functions。比如:

var pageTracker = _gat._getTracker("X-UAXXXXX");
pageTracker._trackPageview();
$(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()

更好的解决方案是什么?为什么?还有其他的评论吗?

这些都是多余的。用新的;这是为你做的

<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>

var _gaq=_gaq | |[];
_gaq推送(['''u setAccount','UA-XXXXX-X']);
_gaq.push([''u trackPageview']);
(功能(){
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);
})();
使用这段代码,您可以在页面中尽早地将跟踪信息存储在JavaScript数组(称为_gaq)中。然后,它只在ga.js加载并准备就绪后执行对Google Analytics的调用。换句话说,它可以为您完成所有这些,而不需要编写复杂的循环,而且您永远不会遇到导致JavaScript错误的竞争条件

这具有非阻塞的额外好处,因此速度稍快