2010-06-24 67 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确定期满值。

相关问题