„_gaq е недефиниран“ Грешка в Google Analytics в IE7 и IE8

Получавам грешка _gaq е недефиниран в 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 е недефиниран? 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 Анализ вие може да искате да знаете кога потребител пусне видеоклип на вашия сайт по следния начин:

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

Забележете препратката към променливата _gaq тук. Ако вече не е дефинирано, ще получите грешката.

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

person Tom Harrison    schedule 16.11.2012