我们有一个网站,我们的应用程序在多个域和子域的iFrame中运行。主网站(www.example.com)只有静态内容,其中包含带有框架应用程序站点的站点的链接。所以sub.example.com,sub2.example.com,search.another.com都有运行应用程序的所有iFrame。
我们希望使用Google Analytics(GA)跟踪所有这些网站。子域跟踪工作正常,但我找不到一种方法来使跨域准确工作。主要问题是我无法在顶级域名之间共享访客cookie信息。因此,访问sub.example.com和search.another.com的访问者会获得2个不同的Cookie,从而导致各种问题。 (例如膨胀的访客计数器,无法正确跟踪推荐信息等)
你可以帮我解决这个问题吗?
(我在网上做了一次非常彻底的搜索,尝试了几种情况但到目前为止没有运气)
以下是我们GA实施的核心:
在sub.example.com上(以及主网站的所有子域名)
_gaq.push(['b._setAccount', 'UA-XXX']);
_gaq.push(['b._setDomainName', 'example.com']);
_gaq.push(['b._setAllowLinker', true]);
_gaq.push(['b._addIgnoredRef', 'example.com']);
_gaq.push(['b._addIgnoredRef', 'search.another.com']);
_gaq.push(['b._trackPageview']);
在search.another.com上(所有外部子域都有变体)
_gaq.push(['b._setAccount', 'UA-XXX']);
_gaq.push(['b._setDomainName', 'search.another.com']);
_gaq.push(['b._setAllowLinker', true]);
_gaq.push(['b._addIgnoredRef', 'example.com']);
_gaq.push(['b._addIgnoredRef', 'search.another.com']);
_gaq.push(['b._trackPageview']);
在所有网页上的iframe之后
<script type="text/javascript">
_gaq.push(function ()
{
var iFrameTracker = _gat._getTrackerByName('b');
var iframe = document.getElementById('myframe');
iframe.src = iFrameTracker._getLinkerUrl(iframe.src);
});
</script>
在www.example.com上的链接
<a href="http://search.another.com" onClick="_gaq.push(function ()
{
var tracker = _gat._getTrackerByName('b');
var linkerUrl = tracker._getLinkerUrl('http://search.another.com');
});">
linkerUrl具有正确的Url,其cookie为www.example.com。但出于某种奇怪的原因,GA在search.another.com上分配了一个新的cookie。我尝试将域名设置为无(['b._setDomainName','none']),这没有帮助。我不确定我是否在这里错过了一个简单的基本点。我想这个问题可能与跨域iFrame有关,链接可以在iFrame或框架集中。所以我想跟踪两者。
我使用Chrome GA调试器插件进行调试。
(顺便说一句,从理论上讲,我们可以拥有无限数量的顶级/子域。因此,无法在GA上为每个域手动创建过滤器。)
答案 0 :(得分:0)
您只是将linkerUrl分配给变量。您需要将用户重定向到该网址。
您应该在onClick处理程序上返回false以防止浏览器执行通常的重定向。
<a href="http://search.another.com" onClick="_gaq.push(function ()
{
var tracker = _gat._getTrackerByName('b');
var linkerUrl = tracker._getLinkerUrl('http://search.another.com');
window.location.href = linkerUrl;
});return false;">
或者您应该使用_link
。这几乎完全相同。
<a href="http://search.another.com"
onClick="_gaq.push(['b._link', this.href]);return false;">