Когда и как Аналитика Google Asynchronous выполняется?

Я переключаю наш сайт для использования Аналитики Google Asynchronous, и мне любопытно на предмет, это - метод продвижения событий к массиву _gaq. Рядом как я могу сказать, события помещаются в шаблон ожидания в _gaq, в то время как ga.js сценарий асинхронно загружается. Они стреляют, как только сценарий загружается, и как события загрузки постдокумента прослежены?

Одним примером является пользователь, нажимающий на ссылку спустя 10 секунд после загрузки страницы - согласно документации, событие должно быть помещено в _gaq. Как сценарий аналитики обнаруживает это?

9
задан Mike Robinson 4 March 2010 в 20:16
поделиться

2 ответа

Общая часть лучше всего описана в Google Analytics Async doc.

Чтобы переместить вызов API в очередь, вы должны преобразовать его из традиционного синтаксиса JavaScript в массив команд. Командные массивы - это просто массивы JavaScript, которые соответствуют определенному формату. Первый элемент массива команд - это имя метода объекта трекера, который вы хотите вызвать. Это должна быть строка. Остальные элементы - это аргументы, которые вы хотите передать методу объекта трекера. Это могут быть любые значения JavaScript.

Я постараюсь объяснить сочные детали: _gaq - это обычный массив JavaScript, а все массивы имеют метод push для добавления записи в конец массива. Поэтому перед загрузкой скрипта Analytics все команды будут вытеснены в массив. В конце сценария Analytics заменяет метод _gaq.push на собственный метод и выполняет все записи в массиве _gaq. Новый метод _gaq.push будет выполнять метод отслеживания мгновенно. Поэтому при запуске метода push через 10 секунд после загрузки страницы должна быть выполнена команда.

8
ответ дан 4 December 2019 в 22:28
поделиться

Всегда трудно распутать код аналитики Google, но если бы я Решите эту проблему, после загрузки скрипта я бы переопределил функцию push в массиве после обработки всего в очереди невыполненных работ ( _gaq ). Таким образом, переопределенная функция push будет просто действовать как прокси для фактических вызовов функций объекта pageTracker .

Вот простой пример переопределения метода push для объекта массива:

var foo = [];
foo.push("one");                      // pushes "one" onto the array
foo.push("two");                      // pushes "two" onto the array
foo.push = function(a) { alert(a) };  // redefines `push`
foo.push("three");                    // alerts "three"
alert(foo);                           // alerts "one,two"
0
ответ дан 4 December 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: