«_gaq is undefined» Ошибка Google Analytics в IE7 и IE8

Я получаю сообщение об ошибке _gaq is undefined в IE7 и IE8

Мой сценарий ниже

<script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-XXXXX']);
    _gaq.push(['_setDomainName', 'yyy.com']);
    _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>

Могу ли я присвоить _gaq значение по умолчанию? Перейдите по этой ссылке


person Dharmalingam Arumugam    schedule 15.11.2012    source источник
comment
что происходит (установка значения по умолчанию) с var _gaq = _gaq || []; либо он принимает текущий _gaq, либо создает пустой массив. с вашим кодом должно быть что-то еще не так. можешь опубликовать еще?   -  person Asken    schedule 15.11.2012
comment
В какой строке вы получите _gaq is undefined? var _gaq = _gaq || []; должен предотвратить это.   -  person vinczemarton    schedule 15.11.2012
comment
Согласитесь с приведенными выше комментариями, ошибка возникает не из-за этого кода, а, скорее, из-за другого кода, который на нее ссылается. Этот сценарий определен в разделе <head> вашего HTML? В более старых версиях GA вы помещали скрипт непосредственно перед закрывающим тегом </body>. Если он все еще там, скорее всего, проблема. Пока тег скрипта был прочитан и обработан до ссылки на переменную _gaq, вы не должны получать эту ошибку (даже из IE7 и IE8 !!).   -  person Tom Harrison    schedule 16.11.2012
comment
@tharrison: я добавил скрипт до </body>   -  person Dharmalingam Arumugam    schedule 16.11.2012


Ответы (1)


Основываясь на вашем ответе на мой комментарий, ответ на этот вопрос таков:

Google Analytics перешла на новый, более современный способ обработки событий несколько лет назад, позволяя браузерам загружать страницу целиком, не дожидаясь ответа от серверов GA. Если раньше вам предлагали разместить фрагмент <script>, предоставленный Google, ближе к концу страницы (непосредственно перед закрывающим тегом body), теперь вместо этого вам следует включить тег где-нибудь в разделе <head> вашего HTML.

Новый сценарий работает, определяя переменную javascript _gaq как массив, который обрабатывается как очередь. Просмотры страниц, события и другие данные, которые вы хотите отслеживать, помещаются в массив, что практически мгновенно. Когда есть время, код GA проверяет массив на предмет содержимого и извлекает его, обрабатывая запросы к серверу GA, пока массив не станет пустым.

Побочным эффектом переменной _gaq является то, что тег скрипта должен быть в HTML до того, как на него будет сделана ссылка, иначе вы получите ошибку JS _gaq is undefined.

Например, как описано здесь в руководстве по отслеживанию событий Google Analytics, вы может захотеть узнать, когда пользователь воспроизводит видео на вашем сайте следующим образом:

<a href="#" onClick="_gaq.push(['_trackEvent', 'Videos', 'Play', 'Baby\'s First Birthday']);">Play</a>

Обратите внимание на ссылку на переменную _gaq здесь. Если это еще не определено, вы получите сообщение об ошибке.

Краткий ответ: поместите фрагмент асинхронного javascript в <head> вашего HTML.

person Tom Harrison    schedule 16.11.2012