Ошибка передачи объекта Google Analytics в функцию по ссылке - PullRequest
0 голосов
/ 11 февраля 2012

Я сделал помощник для своего javascript для отслеживания некоторых событий ajax, вот краткая версия того, что он настроен как

analytics:{
        active: false,
        gaq:  null,
        init: function(gaq){
            this.active = true;
            this.gaq = gaq;
            $('a[href^=\"http://\"]').live('click', function() {
                helper.analytics.trackPageview('/outgoing/' + $(this).attr('href'));
                return true;
            });
        },
        trackPageview: function(page){
            if(this.active === false){
                return;
            }
            this.gaq.push(['_trackPageview',page]);
        }
    },

И у меня есть общая настройка Google Analytics

<script type="text/javascript">
  var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-xxxxxxxx-1']); 
   _gaq.push(['_setDomainName', '.example.com']);
   _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);
  })();
  $(document).ready( function() {
    helper.analytics.init(_gaq);
  });
</script>

Однако в журнале консоли _gaq приводит к объекту.запись helper.analytics.gaq приводит к массиву, к которому добавляются новые просмотры страниц, но просмотр страниц не отслеживается в Google Analytics.
Почему _gaq не передается помощнику по ссылке?

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

При создании тега сценария фрагмент ga устанавливает для атрибута async значение true. Поэтому он будет загружаться независимо от тела. Вам нужно будет привязать обработчик события к событию onload тега ga script. Примерно так:

(function() {
 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;

 ga.onload = function(){
  herlper.analytics.init(_gaq);
 };

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

Я не проверял это, но думаю, что это может сработать.

0 голосов
/ 11 февраля 2012

Видите ли вы какие-либо синтаксические ошибки в консоли инструментов Crome dev или в Firefox и firebug?

У вас '." после начального тега сценария.

...