【发布时间】: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