4

我试图让有Isotope谷歌分析建立浏览量哈希更改

下一堆的内容,以显示每个哈希变化作为谷歌分析浏览量主页。最初,我打算将其作为活动来做,但它确实应该是综合浏览量。

所以我设置的修改GA:

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 

ga('create', 'UA-XXXXXXXX-X', {'allowAnchor': true}); 
ga('send', 'pageview', { 'page': location.pathname + location.search + location.hash}); 

在谷歌Analytics(分析),我现在看到的哈希标签,如果有人去到一个特定的URL —例如:http://www.example.com/#pet-health 如果他们重新载入页面,我看到哈希在GA中,但如果他们点击同位素“导航”链接来获取它,则不会。如果他们点击,我只是看到“/”

在同位素射击,我有什么似乎并不奏效:

//Sets up filtering on click of Isotope navigational elements 
    $('#isotopeFilters a, .subnav a, #isotopeContainer .isotopeNav a, .page-template-page-home-php #logo').click(function(){ 
     var selector = $(this).attr('data-filter'); 
     var prettyselector = selector.substr(1); 
     ga('send', 'pageview', location.pathname+location.search+location.hash); 

     location.hash = prettyselector; 

     $('#isotopeFilters a, .subnav a').removeClass('active'); 
     $('a[class="' + prettyselector + '"]').addClass('active'); 

     $container.isotope({ 
      filter: selector, 
      itemSelector: '.item', 
      masonry: { 
       columnWidth: 270 
      }, 
      animationOptions: { 
      duration: 750, 
      easing: 'linear', 
      queue: false, 
     } 
     }); 
     return false; 
    }); 

我认为,这条线在点击功能会做诀窍:

ga('send', 'pageview', location.pathname+location.search+location.hash); 

我的语法不正确或缺少什么东西?

//Fires Isotope functionality when hash/URL changes 
    $(window).hashchange(function(){ 
     if(location.hash!=''){ 
      var hashfilter = '.' + location.hash.substr(1); 
     }else{ 
      var hashfilter = '.home'; 
     } 

     $container.isotope({ 
      filter: hashfilter, 
      itemSelector: '.item', 
      masonry: { 
       columnWidth: 270 
      }, 
      animationOptions: { 
       duration: 750, 
       easing: 'linear', 
       queue: false, 
      } 
     }); 
     isotopeSubNav(); 
    }); 

    if(location.hash!=''){ 
     var hashfilter = '.' + location.hash.substr(1); 
     ga('send', 'pageview', location.pathname+location.search+location.hash); 
     $(hashfilter).addClass('active'); 
    } 

这是使用相同的语法,所以我假设,如果我解决一个,复制语法的hashchange功能将得到记录为好。

回答

8

要更改被发送到GA页路径,你只是稍作修改代码:

ga('send', 'pageview', {'page': location.pathname+location.search+location.hash}); 

更多信息可以在这里找到:https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced?hl=en#fieldObject

+1

由于这个工程,但考虑更新的代码,因为它缺少右花括号'}'这给了语法错误。它看起来应该是这样的: 'ga('send','pageview',{'page':location.pathname + location.search + location.hash});' – pkk

+1

谢谢,修正了错误! – nyuen

5

在发送发送pagepageview Google不建议拨打电话:

虽然从技术上讲,浏览量匹配的发送命令接受 可选页面字段作为第三个参数,传递页面字段 不建议在跟踪单页面应用程序时使用。这 是因为通过发送命令传递的字段未在 跟踪器上设置 - 它们仅应用于当前命中。如果您的应用程序发送任何非浏览量匹配 (例如事件或社交互动),则不更新跟踪器 将导致问题,因为这些匹配将与跟踪器创建时的任何页面值相关联 。

用途:

ga('set', 'page', location.pathname+location.search+location.hash); 
ga('send', 'pageview'); 

Google Analytics guide on tracking Single Page Applications.