Доступ к Google Analytics Universal Analytics во внешних JS файлах

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

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

Ответ 1

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

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

Из параметров, переданных IIFE, мы знаем, что я = window и r = "ga":

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

В неприглядном 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.

Ответ 2

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

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

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

Если вы рискуете, что хит не пройдет и не достигнет вашей учетной записи.

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

Ответ 3

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

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

Мне нужен мой код 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;
     }
   });
}