Новый код Google Analytics во внешний файл - PullRequest
14 голосов
/ 06 октября 2010

Новый код 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 || []; [...]"в разные места, но ничего не получалось.

Ответы [ 4 ]

17 голосов
/ 29 октября 2012

Не следует помещать код GA в функцию по двум причинам:

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

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

  1. Сохраняет код в чистоте (без встроенного GA)
  2. Кэширует пропускную способность js - сохраняет и загружает быстрее

Таким образом, 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)
})();
8 голосов
/ 06 октября 2010

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

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

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

6 голосов
/ 06 октября 2010

Похоже, что вопрос похож на этот: Использование асинхронного кода Google Analytics из внешнего файла JS

Кажется, что вставка кода во внешний файл устраняет преимущество нового асинхронного кода.

2 голосов
/ 06 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...