Как мне убедиться, что Google Analytics загружен перед вызовом его функций? - PullRequest
1 голос
/ 07 октября 2010

После прочтения поста в блоге у меня появилась идея добавить код безопасности, чтобы гарантировать, что объекты 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()

Какое решение лучше?Зачем?и какие-либо дополнительные комментарии?

1 Ответ

0 голосов
/ 07 октября 2010

Это все ненужно. Просто используйте новый Асинхронный код 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) как можно раньше на странице. Затем он выполняет вызов Google Analytics только после загрузки и готовности ga.js. Другими словами, он делает все это за вас, без необходимости писать сложные циклы, и у вас никогда не будет условий гонки, которые приводят к ошибкам JavaScript.

Это имеет дополнительное преимущество, заключающееся в том, что он не блокирует и, следовательно, немного быстрее.

...