2010-06-24 66 views
1

我們已經實施了一個簡單的GA實現,並且有一段時間,我們使用的唯一附加方法是setVar和setSessionTimeout。有沒有辦法可以切換到GA的跨域跟蹤配置(某些鏈接通過_link方法連線),而不會丟失客戶端系統上的現有跟蹤數據?從以前的Google Analytics實施切換到跨域跟蹤

我運行了很多測試,解決的問題越多,出現的問題就越多。簡而言之:

預執行,客戶端有這些cookie:__utm(a,b,c,z,v)。第一步是更改代碼並添加_setAllowLinker和_setAllowHash方法,但這是拋出TypeError。我發現這可以通過在調用pageTracker方法之前刪除__utmv cookie,然後再次調用_setVar來避免。

到位的新的代碼似乎是工作確定沒有出現任何的錯誤:

document.cookie = '__utmv=; expires=Tue, 22 Jun 2010 11:57:00 GMT;'+ 
    ' path=/; domain=XXXXXXX'; 
var pageTracker=_gat._getTracker(UA-XXXXXXXX); 
pageTracker._setAllowLinker(true); 
pageTracker._setAllowHash(false); 
pageTracker._setSessionTimeout(XXXXX); 
pageTracker._setVar(XXXXX); 
pageTracker._trackPageview(); 

的餅乾將被更新爲不使用哈希值,因此它們的值現在可以使用跨域,但問題在於__utm cookies中的值已經用新值刷新,這意味着我們正在失去用戶歷史記錄(並且新的訪問將爆炸)。

例如,__utma:

  • 前 - XX-散列值,XX.1379282990.1277294951.1277294951.1277294951.1
  • 後 - 1.26318765.1277294984.1277294984.1277294984.1

如果它無法切換在不丟失用戶歷史記錄的情況下跨域GA配置,有沒有辦法在點擊到下一個域的鏈接上僞造它。也就是說,從cookie中構建鏈接URL並將所有哈希值前綴替換爲1?

謝謝!

回答

0

不幸的是,似乎沒有正確的方法來使用ga.js API來做到這一點。我已經用該溶液:

var pageTracker = _gat._getTracker("UA-123456-7"); 
if (getCookie('__utma') && getCookie('__utma').substr(0, 2) == '1.') { 
    // hash value safely removed, flick GA API switch 
    pageTracker._setAllowHash(false); 
} 
pageTracker._trackPageview(); 

if (getCookie('__utmc') != '1') { 
    // remove hash values from all GA cookies 
    eraseCookieHash(); 
} 

eraseCookieHash函數,每個cookie被手動更新用1替換的散列值,使用引導在http://code.google.com/apis/analytics/docs/concepts/gaConceptsCookies.html確定期滿值。

相關問題