2014-09-09 3 views
0

Я делаю много виджетов javascript. В рамках этих виджетов мы часто используем Google Analytics для отслеживания действий внутри виджета. Упрощенный, что я делаю:Как узнать, загружена ли Google Analytics

var setupGA = function(){ window._gaq.push(['_setAccount', 'UA-###']); }; 
if(window._gaq){ 
    setupGA(); 
} else { 
    this.loadScript(GOOGLE_ANALYTICS_PATH, function(){ 
     var waitga = setInterval(function(){ 
      if(window._gaq){ 
       clearInterval(waitga); 
       setupGA();  
      } 
     }, 500); 
    }); 
} 

Где GOOGLE_ANALYTICS_PATH мой локальный путь к файлу и loadScript является пользовательский метод, чтобы загрузить скрипт и выполнить обратный вызов.

Когда Google обновляет свою библиотеку аналитики (теперь analytics.js), старые методы обеспечения загрузки библиотеки аналитики больше не работают. example code for google analytics предоставляет глобальный объект ga, но этот объект может иметь собственное имя. С проверкой старой очереди мне интересно, как лучше всего проверить наличие версий аналитики google analytics.js или ga.js (я могу пропустить очень старые типы отслеживания Urchin).

Это должно быть что-то вроде:

var setupGA = function(){ window._gaq.push(['_setAccount', 'UA-###']); }; 
if(window._gaq && !window.**ga**){ 
    setupGA(); 
} else { 
    this.loadScript(GOOGLE_ANALYTICS_PATH, function(){ 
     var waitga = setInterval(function(){ 
      //_gaq will always be loaded for now 
      if(window._gaq){ 
       clearInterval(waitga); 
       setupGA();  
      } 
     }, 500); 
    }); 
} 

Где га является то, что глобальный элемент я могу проверить. Я полагаю, что это то, что я ищу

+0

Я буквально только что сделал это сегодня утром на пару маленькие гаджеты, которые я сделал. Я просто скопировал тот же самый код Google Analytics, который я использую на остальной части моего сайта в файле .js. Аналитика сообщает о деятельности на любой странице, на которой появляется гаджет, даже на внешних доменах. Это именно то, что я хотел. – durbnpoisn

+0

Чтобы уточнить, пытаетесь ли вы отслеживать статистику использования вашего виджета, пока он работает на сайтах других людей? –

+0

Отчетность не является проблемой даже при проверке загрузки аналитики. Если мой клиент загружает analytics.js, и я проверяю window.gaq, я не нахожу его и сделаю дополнительный запрос для другой версии. Это не так просто, как проверка ga, потому что клиент может (и делает) называть объект Google Analytics тем, что им нужно. – user1026361

ответ

1

Ответил на мой вопрос с чуть большим количеством исследований.

С новой платформой Universal Analytics создается переменная уровня окна. Эта переменная называется GoogleAnalyticsObject. Этот объект даст вам имя переменной, созданного для размещения объекта Universal Analytics

EX: Using (window,document,'script','//www.google-analytics.com/analytics.js','ga'); will return "ga" 
EX: Using (window,document,'script','//www.google-analytics.com/analytics.js','notGA'); will return "notGA" 

Вы можете использовать эту переменную, чтобы потянуть Analytics объект:

window[window.GoogleAnalyticsObject] 
+0

Для чего стоит, я надеюсь, что это отслеживание выбрать в.Если бы я узнал, что кто-то загружал дополнительные скрипты и делал дополнительные HTTP-запросы на моем сайте, без моего ведома, я был бы очень раздражен. –

+1

Заметьте, что 'GoogleAnalyticsObject' не гарантированно будет там, поэтому вам все равно нужно проверить' ga'. Кроме того, ваш код должен добавлять кавычки вокруг «GoogleAnalyticsObject» или просто писать 'window.GoogleAnalyticsObject'. Теперь у вас это похоже на переменную. –

+0

Отличная точка Филипп. Дополнительное отслеживание в этом случае по контракту принято нашими клиентами. Анекдотически, у меня есть несколько клиентов, которые используют пользовательские объекты analytics.js. На каждой из этих страниц у меня есть доступ к объекту GoogleAnalytics. Поскольку ga также не является данным, я буду осторожно опираться на объект GoogleAnalyticsObject, а также попытаюсь обнаружить _gaq/_gat. Я отредактировал ответ, как вы предложили – user1026361

0

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

с Universal Analytics (analytics.js), обратите внимание на просьбу www.google-analytics.com/collect

с унаследованным кодом (ga.js или urchin.js), обратите внимание на просьбу __utm .gif

Если ваш браузер использует сценарий блокировки плагина как NoScript, код отслеживания не будет работать, если вы не позволяете сценарии из www.google-analytics.com

Смежные вопросы