Как переименовать объект ga

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

Как переименовать глобальный объект

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

Например, если вы хотите переименовать объект ga в analytics, измените тег следующим образом:

<!-- Google Analytics -->
<script>
(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','analytics');

analytics('create', 'UA-XXXXX-Y', 'auto');
analytics('send', 'pageview');
</script>
<!-- End Google Analytics -->

Как переименовать глобальный объект вручную

Когда загружается библиотека analytics.js, она ищет строку, хранящуюся в глобальной переменной GoogleAnalyticsObject. Если эта переменная существует, ее строковое значение используется в качестве нового названия глобальной очереди команд.

Например, если вы загружаете analytics.js с помощью метода jQuery $.getScript, вы можете переименовать глобальный объект следующим образом:

<script>
// Instructs analytics.js to use the name `analytics`.
window.GoogleAnalyticsObject = 'analytics';

// Use jQuery to load analytics.js.
$.getScript('//www.google-analytics.com/analytics.js', function() {

  // Creates a tracker and sends a pageview using the renamed command queue.
  analytics('create', 'UA-12345-1', 'auto');
  analytics('send', 'pageview');
});
</script>

Альтернативный асинхронный тег

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

Однако вы можете переименовать глобальный объект ga, используя описанный выше метод, и по-прежнему пользоваться всеми преимуществами асинхронной загрузки.

Измененный альтернативный код отслеживания, приведенный ниже, устанавливает для переменной GoogleAnalyticsObject значение analytics и переименовывает все экземпляры ga в analytics:

<!-- Google Analytics -->
<script>

// Instructs analytics.js to use the name `analytics`.
window.GoogleAnalyticsObject = 'analytics';

// Creates an initial analytics() function.
// The queued commands will be executed once analytics.js loads.
window.analytics = window.analytics || function() {
  (analytics.q = analytics.q || []).push(arguments)
};

// Sets the time (as an integer) this tag was executed.
// Used for timing hits.
analytics.l = +new Date;

// Creates a default analytics object with automatic cookie domain configuration.
analytics('create', 'UA-12345-1', 'auto');

// Sends a pageview hit from the analytics object just created.
analytics('send', 'pageview');
</script>

<!-- Sets the `async` attribute to load the script asynchronously. -->
<script async src='//www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->