代码之家  ›  专栏  ›  技术社区  ›  Matty F

从以前的Google Analytics实现切换到跨域跟踪

  •  1
  • Matty F  · 技术社区  · 16 年前

    我们已经有了一个简单的GA实现,并且已经有一段时间了,我们使用的唯一附加方法是setVar和setSessionTimeout。有没有一种方法可以让我们切换到GA的跨域跟踪配置(其中某些链接通过\链接方法连接),而不会丢失客户端系统上的现有跟踪数据?

    在实现之前,客户端有以下cookies:\uutm(a,b,c,z,v)。第一步是更改代码并添加\u setAllowLinker和\u setAllowHash方法,但这会引发类型错误。我发现可以通过在调用pageTracker方法之前删除\uutmv cookie,然后再次调用\u 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();
    

    Cookie现在更新为不使用散列值,因此它们的值现在可以跨域使用,但问题是\uUTM Cookie中的值已用新值刷新,这意味着我们正在丢失用户历史记录(新的访问将激增)。

    例如,\ utma:

    • 前-XX-HASHVALUE-XX.1379282990.1277294951.1277294951.1277294951.1
    • 后-1.26318765.1277294984.1277294984.1277294984.1

    谢谢!

    1 回复  |  直到 16 年前
        1
  •  0
  •   Matty F    16 年前

    不幸的是,似乎没有合适的方法使用ga.jsapi来实现这一点。我采用了以下解决方案:

    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 以确定expires值。