Использование асинхронного кода Google Analytics из внешнего JS файла
Я пытаюсь добавить асинхронную версию кода отслеживания Google Analytics на веб-сайт.
Я хотел бы оставить JavaScript в отдельном файле и называть его оттуда.
Вот что я получил в моем .js файле:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
function loadtracking() {
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_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);
})();
}
addLoadEvent(loadtracking);
И вот что я получил в теге <head>
моей главной страницы:
<script type="text/javascript" src="js/google-analytics.js" ></script>
Однако, очевидно, проблема, так как через несколько дней я не получаю статистику!
Любые идеи, что мне нужно изменить?
Спасибо,
Нил
EDIT: Хорошо... После некоторой обратной связи ниже я собираюсь добавить новое текущее содержимое моего .js файла. Я буду держать его в курсе, чтобы, если/когда это будет решено, он, надеюсь, поможет другим людям, пытающимся сделать подобные вещи.
var _gaq = _gaq || [];
function loadtracking() {
window._gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
window._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);
})();
}
loadtracking();
Ответы
Ответ 1
Ваш "var _gaq" находится внутри функции. Это означает, что он локально ограничен внутри этой функции и не будет существовать глобально. GA зависит от глобальной переменной _gaq. Если вы хотите сохранить его внутри такой функции, ссылайтесь на него как на window._gaq.
Ответ 2
Вы полностью пропустите точку асинхронного кода отслеживания. Не помещайте его во внешний файл, потому что это точно так же, как и старая синхронная GA.
И самое главное не откладывайте код отслеживания до window.onload
, поскольку он может срабатывать слишком поздно.
Если вы используете асинхронный GA , просто поместите его в верхнюю часть документа во встроенный тег script. Это рекомендация на сайте Google Analytics.
Вставьте асинхронный фрагмент на нижней части раздела <head>
вашего страниц, после любых других скриптов страница или шаблон.