2014-01-03 2 views
14

В старой версии Google Analytics вы можете просто добавить var _gaq = _gaq || []; в верхней части ваших файлов javascript, что позволит вам делать события и транзакции до полной загрузки GA.Доступ к универсальной аналитике Google Analytics во внешних JS-файлах

С помощью Universal Analytics вы больше не используете .push(), так что это правильный способ создать объект ga во внешних файлах, в которых Google Analytics, возможно, еще не загрузился, но вам нужно нажать события и транзакции?

ответ

10

Выражение «Вызываемая немедленная функция» в фрагменте Google Analytics обрабатывает создание этого объекта. В этом фрагменте вы увидите следующее:

i[r] = i[r] || function() { 
    (i[r].q = i[r].q || []).push(arguments) 
} 

Мы знаем из параметров, передаваемых IIFE, что я = окно и г = «га»:

(function(i, s, o, g, r, a, m) { 
    //... 
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); 

В ун-uglyfied JavaScript, то сниппета читает как таковой:

window['ga'] = window['ga'] || function() { 
    (window['ga'].q = window['ga'].q || []).push(arguments) 
} 

Итак, вызвав глобальную функцию ga, вы, по сути создавая массив, который служит в качестве очереди (если она уже не существует) и толкая значения т он в очереди.

В Universal Analytics, вызов этой функции:

ga('create', 'UA-XXXX-Y', 'auto'); 

То же самое, как это в предыдущей версии GA:

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-XXXX-Y']); 

Более подробную информацию можно найти в Google dev docs.

+1

Bah. Побей меня. В принципе, вы могли бы продолжить и создать функцию с именем 'ga', которая ничего не делала, а вводила коллекции аргументов в свойство функции, которое представляет собой массив с именем' q'. 'window.ga = function() {ga.q.push (аргументы); }; ga.q = []; ga ("a", "b", 32); ga ("c", "d", function() {return "orange";}); '. Кроме того, это здорово, что во-первых, они использовали «изограмму», потому что это именно то, что нужно сделать для минимизации ... два, отлично, что им удалось сделать «irq» цепочкой прерываний для отслеживания аналитики и «irl» текущей время. Это ботаники, с которыми я хотел бы попить. – Norguard

2

Вам не нужно переопределять функцию ga, так как она уже определена в фрагменте отслеживания. Все, что вам нужно сделать, это использовать объект ga во внешнем файле, и вам хорошо идти. ga уже является глобальным объектом, поэтому нет необходимости его охватить.

Вы также не хотите быть толкая что-либо в ga объект, прежде чем по крайней мере, запустить линию, которая создает трекер:

ga('create', 'UA-XXXX-Y', 'auto'); 

Если d скорее всего гвоздем не получит до конца и выиграл Войдите в свою учетную запись.

Убедитесь, что любой внешний файл, который вы используете, включает его после фрагмента отслеживания на вашем сайте или, возможно, включает фрагмент отслеживания во внешний файл вверху.

+0

Как я читал, этот вопрос задавал вопрос о том, что до того, как будет определен фрагмент отслеживания. (т. е. 'ga' не существует). – Mark

+0

@Mark, он не говорит перед фрагментом отслеживания, он говорит, прежде чем он будет загружен, что совершенно другое. Если вы поместите код выше после фрагмента отслеживания и запускается до загрузки файла analytics.js, он работает. – Eduardo

2

Вот что я использовал в своем внешнем js-файле и, похоже, хорошо работает и отслеживает. Примечание, чтобы отслеживать материал событий, вы можете использовать вкладку событий реального времени в своей учетной записи GA, чтобы подтвердить ее работу.

Я также отслеживаю исходящие события здесь. Примечание. Я потратил 2 дня на то, чтобы отслеживать отслеживание связанных событий. Убедитесь, что в вашем событии onclick вы используете «эти одиночные кавычки». Я скопировал код с этой страницы https://support.google.com/analytics/answer/1136920?hl=en, и кавычки на самом деле представляют собой другой символ, который разбивает скрипт, поэтому введите кавычки с клавиатуры.

Мне нужен код GA во внешнем файле, потому что у меня был все старый классический код, и теперь, когда Google перешел на Universal, мне пришлось перейти на каждую страницу, чтобы внести изменения в google spetet. Просто умнее, чтобы централизовать его, я думаю, все больше изменений придет в будущем.

В моей голове тег

<script type="text/javascript" src="/web_resources/themes/OldsCollege/js/scripts.js" async></script> 

в моем файле JS;

/*Analytics*/ 


    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 

    ga('create', 'UA-616432-1', 'auto'); 
    ga('send', 'pageview'); 


var trackOutboundLink = function(url, action) { 
    ga('send', 'event', 'outbound-26th', action, url, {'hitCallback': 
    function() { 
    document.location = url; 
    } 
    }); 
} 
Смежные вопросы