1

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

典型的谷歌分析代码类似于:

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

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

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

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

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

4

1 回答 1

0

这都是不必要的。只需使用新的Google Analytics 异步代码;它为你做这个。

<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 错误的竞争条件。

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

于 2010-10-07T15:07:55.173 回答