【问题标题】:Switching to cross domain tracking from previous Google Analytics implementation从以前的 Google Analytics(分析)实施切换到跨域跟踪
【发布时间】:2011-03-07 18:02:15
【问题描述】:

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

我进行了很多测试,解决的问题越多,出现的问题就越多。简而言之:

实现前,客户端有这些cookies:__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();

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

例如,__utma:

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

如果无法在不丢失用户历史记录的情况下切换到跨域 GA 配置,有没有办法在链接上伪造它,该链接将点击进入下一个域。也就是从 cookie 中构造链接 URL 并将所有哈希值前缀替换为 1?

谢谢!

【问题讨论】:

    标签: google-analytics cross-domain


    【解决方案1】:

    不幸的是,使用 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 处的指南来确定过期值。

    【讨论】:

      猜你喜欢
      • 2013-12-06
      • 1970-01-01
      • 2015-01-31
      • 2012-03-21
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      相关资源
      最近更新 更多