Новый код Google Analytics во внешний файл

Новый код Google Analytics выглядит следующим образом:

<script type="text/javascript">

 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-0000000-00']);
 _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>

Как переместить весь новый асинхронный код отслеживания Google Analytics во внешний файл JavaScript?

Я спрашиваю особенно о "var _gaq = _gaq || [], [...]" части, потому что я знаю, что можно переместить остальные, например.

index.html

<script type="text/javascript">

 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-0000000-00']);
 _gaq.push(['_trackPageview']);

</script>
<script src="include.js" type="text/javascript"></script>

include.js

function includeGA()
{
 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);
}

$(document).ready(function()
{
 includeGA();
});

Я уже пытался поместить код "var _gaq = _gaq || [], [...]" в разные местоположения, но ничего не получилось.

Ответ 2

Вы не должны вводить код GA в функции по двум причинам:

  • Переменные GA становятся локальными. Они должны использоваться во всем мире.
  • Вы вызываете функцию только тогда, когда загружается вся страница (документ, технически). Это делает процесс загрузки последовательным (побеждая parallelism аналитики asyn).

Люди, критикующие использование внешних JS для кода GA, здесь немного ошибаются. С введением атрибута async в js embed, это имеет смысл. Я сохраняю этот код GA во внешних js и встраиваю его async прямо в начало документа. Два преимущества:

  • Сохраняет код аккуратным (нет встроенного GA)
  • Сохраняет пропускную способность js-saves и быстрее загружается

Итак, HTML станет следующим:

<head>
    <script type="text/javascript" src="static/scripts.js" async></script>
</head>

и scripts.js будут иметь:

var _gaq=_gaq||[];
_gaq.push(['_setAccount','UA-XXXXXXXX-1']);
_gaq.push(['_setDomainName','.domain.net']);
_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)
})();

Ответ 3

Затем снова: не поместите ваш фрагмент Google Async в внешний файл, потому что он будет заблокировать другое содержимое из загрузки. Основной смысл иметь асинхронный код отслеживания - сделать его параллельным.

Если вы используете асинхронный GA, просто поместите его в верхний вашего документа в тег inline script. Это рекомендация на сайте Google Analytics:

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

Ответ 4

Я не понимаю, почему вы не можете поставить его выше "function includeGA()" в include.js. На самом деле, я не понимаю, почему вы не можете скопировать весь google script буквально в include.js(без обходного пути $). Это должно быть указано в теге script -include, правильно?