2012-06-14 65 views

回答

3

你不應該有任何改變。像正常一樣添加您的Google Analytics代碼片段,並像其他Javascript庫一樣包含Backbone.Analytics。

+0

我敢肯定,這將只捕獲登陸網址,不會它? –

+0

Backbone.Analytics?它旨在跟蹤您使用Backbone路由器觸發的所有URL更改... – KendallB

+0

對不起,我太快閱讀您的答案,並沒有消化「包含Backbone.Analytics」。昨天過得很忙:| –

17

我喜歡「自己動手」的風格:)這真的很簡單:

var Router = Backbone.Router.extend({ 

    initialize: function() 
    { 
     //track every route change as a page view in google analytics 
     this.bind('route', this.trackPageview); 
    }, 

    trackPageview: function() 
    { 
     var url = Backbone.history.getFragment(); 

     //prepend slash 
     if (!/^\//.test(url) && url != "") 
     { 
      url = "/" + url; 
     } 

     _gaq.push(['_trackPageview', url]); 
    } 
} 

你添加谷歌分析腳本到您的網頁如常。

0

至於其他可能的解決方案/插件,我使用的幾個項目https://github.com/aterris/backbone.analytics和它的作品也非常的好。它還具有其他功能,例如事件跟蹤功能,這些功能在分析集成的某些時候可能非常方便。

3

只是想我會分享如何我做這件事。這可能不適用於較大的應用程序,但我喜歡手動告訴GA何時跟蹤頁面查看或其他事件。我嘗試綁定到「全部」或「路由」,但無法完全記錄下我需要的所有動作。

App.Router = BB.Router.extend({ 
    //... 
    track: function(){ 
     var url = Backbone.history.getFragment(); 

     // Add a slash if neccesary 
     if (!/^\//.test(url)) url = '/' + url; 

     // Record page view 
     ga('send', { 
      'hitType': 'pageview', 
      'page': url 
     }); 
    } 
}); 

因此,我在導航或執行任何我想跟蹤的操作後,只需撥打App.Router.Main.track();即可。

請注意,我用的是新Analytics.js跟蹤代碼段是目前處於公測階段,但有一個API非常直觀,它消除了一個插件,抽象的任何複雜什麼那麼的需要。例如:我跟蹤有多少人滾動到這樣一個無限滾動視圖的結尾:

onEnd: function(){ 
    ga('send', 'event', 'scrollEvents', 'Scrolled to end'); 
} 

enter image description here 好運。

1

我寫這個小帖子,希望它可以幫助別人:

http://sizeableidea.com/adding-google-analytics-to-your-backbone-js-app/

var appRouter = Backbone.Router.extend({ 
    initialize: function() { 
     this.bind('route', this.pageView); 
    }, 
    routes: { 
     'dashboard': 'dashboardPageHandler' 
    }, 
    dashboardPageHandler: function() { 
     // add your page-level logic here...  
    }, 
    pageView : function(){ 
    var url = Backbone.history.getFragment(); 

    if (!/^\//.test(url) && url != ""){ 
      url = "/" + url; 
     } 

     if(! _.isUndefined(_gaq)){ 
     _gaq.push(['_trackPageview', url]); 
     } 
    } 
}); 

var router = new appRouter(); 

Backbone.history.start(); 
0

如果使用新的通用的analytics.js,你可以是這樣做的:

var Router = Backbone.Router.extend({ 
    routes: { 
     "*path":      "page", 
    }, 

    initialize: function(){ 
     // Track every route and call trackPage 
     this.bind('route', this.trackPage); 
    }, 

    trackPage: function(){ 
     var url = Backbone.history.getFragment(); 
     // Add a slash if neccesary 
     if (!/^\//.test(url)) url = '/' + url; 
     // Analytics.js code to track pageview 
     ga('send', { 
      'hitType': 'pageview', 
      'page': url 
     }); 
    }, 

    // If you have a method that render pages in your application and 
    // call navigate to change the url, you can call trackPage after 
    // this.navigate() 
    pageview: function(path){ 
     this.navigate(path); 
     pageView = new PageView; 
     pageView.render(); 
     // It's better call trackPage after render because by default 
     // analytics.js passes the meta tag title to Google Analytics 
     this.trackPage(); 
    } 
} 
0

所有答案似乎是幾乎好,但外的日期(9月2015)。在此之後谷歌開發者指南:https://developers.google.com/analytics/devguides/collection/analyticsjs/single-page-applications 這裏是我的版本的解決方案(我已經添加了建議調用ga('set'...)):

MyRouter = Backbone.Router.extend 
    ... 
    initialize:() -> 
     # Track every route and call trackPage 
     @bind 'route', @trackPage 

    trackPage:() -> 
     url = Backbone.history.getFragment() 
     # Add a slash if neccesary 
     if not /^\//.test(url) then url = '/' + url 
     # Analytics.js code to track pageview 
     global.ga('set', {page: url}) 
     global.ga('send', 'pageview') 
    ... 
+1

是global.ga是window.ga的咖啡等價物嗎?因爲在javascript中編寫類似的代碼,我發現我需要將window.ga放入trackPage中,否則它不會找到變量。 – DiMono

+0

@DiMono有點,但你是對的:window.ga是你需要在Javascript – Akhorus

0

剛剛發佈的更新到這個問題,因爲它似乎是一個我得到了很多來自backbone.js開發人員,我知道或者與誰合作似乎陷入了最後的障礙。

的JavaScript:

App.trackPage = function() { 
var url; 
if (typeof ga !== "undefined" && ga !== null) { 
    url = Backbone.history.getFragment(); 
    return ga('send', 'pageview', '/' + url); 
} 
}; 

Backbone.history.on("route", function() { 
return App.trackPage(); 
}); 

跟蹤代碼段:

<head> 
<script> 
    (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', 'auto'); 
</script> 
</head> 

跟蹤代碼段應可你想跟蹤活動的任何頁面上。這可能是您的index.html,其中您的所有內容都被注入,但有些網站可能有多個靜態頁面或混合。如果你願意,你可以包含ga('send')函數,但它只會在頁面加載時觸發。

我寫了一個博客貼子,去到更詳細,解釋而不是顯示,全過程,你可以在這裏找到:http://v9solutions.co.uk/tech/2016/02/15/how-to-add-google-analytics-to-backbone.js.html