如何确保在调用 Google Analytics 函数之前加载 Google Analytics?

发布于 2024-09-26 04:12:01 字数 837 浏览 7 评论 0原文

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

典型的 Google Analytics 代码类似于:

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

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

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

1)使用 JQuery.ready 调用 _get 函数。例如:

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

有什么更好的解决方案?为什么?还有其他意见吗?

After reading a blog post, I got the idea to add safety code to ensure that the Google Analytics objects are fully loaded before calling it's functions.

Typicle Google Analytics code goes something like:

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

and

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

I have thought of two options to double ensure that the _gat-object is loaded before use:

1) Use JQuery.ready to call the _get-functions. Something like:

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

or

2) Use JavaScript timeout

function checkGat() {

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

}

checkGat()

What is the better solution? Why? and any additional comments?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱的那么颓废 2024-10-03 04:12:01

这都是不必要的。只需使用新的 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 错误的竞争条件。

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

This is all unnecessary. Just use the new Google Analytics Asynchronous Code; it does this for you.

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

With this code, you store the tracking information in a JavaScript array (called _gaq) as early in the page as you want. Then, it only executes the call to Google Analytics once the the ga.js has loaded and ready. In other words, it does all of this for you, without needing to write complex loops, and you'll never have race conditions that result in JavaScript errors.

This has the added benefit of being non-blocking and thus slightly faster.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文