谷歌分析 – 一个页面上的多个跟踪器(cookie冲突)

我正在编写一个应用程序,该应用程序应该embedded到其他人的网站(一种小部件)中。 我正在使用Google Analytics(分析)来跟踪所有在embedded网站上访问我的脚本的所有实例的人员。 问题是我不知道如何使用它,以免干扰这些网站自己的Google Analytics帐户。 我将跟踪器variables存储在命名空间中,所以我认为应该这样做,但是我还没有意识到GA将其设置存储在cookie(__utma,__utmz等)中,并且这两个cookie都被跟踪器使用,如果有两个在同一个页面…因此,例如,如果我使用_setVar在Google Analytics中存储某种用户定义的variables,并且embedded的网站做相同的,我们覆盖彼此的值…

当然,如果Google提供了一种将cookies的名称更改为自定义名称的方法,那将是最简单的,但是我找不到任何方法。 我想过使用cookie域或path来强制一个单独的cookie,但这是行不通的,因为如果我设置的域或path不是真正的域/path,那么cookie在重新加载之后对于页面是不可读的。 ..

有谁知道一种方法来在一个页面上有两个跟踪器,并使他们使用单独的cookie,以便他们不覆盖对方的设置?

或者,如果这是完全不可能的 – 是否有任何其他分析服务具有与GA相似的function? (它将不得不有先进的function,如事件和活动跟踪…)

现在使用新的asynchronous跟踪代码变得容易了。 🙂

https://developers.google.com/analytics/devguides/collection/gajs/#MultipleCommands

您可以在网页上安装多个Google Analytics(分析)跟踪代码实例,以便将数据发送到您帐户中的多个媒体资源。 https://support.google.com/analytics/answer/1032400?hl=en

或者,您可以发挥创意,并按照Google的说明执行以下操作。 https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#multipletrackers

<script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-XXXX-Y', 'auto'); ga('create', 'UA-XXXX-Y', 'auto', {'name': 'newTracker'}); ga('send', 'pageview'); ga('newTracker.send', 'pageview'); </script> 

Google Analytics(分析)可以在同一页面上与多个跟踪器一起工作,因此不必使用不同的Cookie名称。 查看Google Analytics(分析) – 针对多个帐户的多个跟踪器的问题的答案

更新

事实certificate,使用多个跟踪器是一种工作方法,但有一些缺陷 。 其中之一,也就是说,你不能对每个用户分别应用不同的用户分类。 约翰·亨森(John Henson)演示了一种强制GA使用不同的cookie的解决方法,可能是你应该检查它。

如果有人仍然有这个问题,并希望一个简单的粘贴,我的问题是使用我自己的谷歌跟踪我的代码被添加到其他人的网页,也可能使用谷歌跟踪。 我已经testing了这一点,并确认它按预期工作:

 var _gaq = _gaq || []; _gaq.push(['some_unique_name._setAccount', 'UA-xxxxxxxx-1']); _gaq.push(['some_unique_name._trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); 

我也在使用事件

 _gaq.push(['some_unique_name._trackEvent', 'Event Category', 'Event Action', 'Event Label']); 

如果有人看到它的问题,请让我知道。

根据Török列出的文档 ,似乎正确的答案是使用_setCookiePath 。 这会导致每个跟踪器使用完全不同的cookie。

来自网站的示例代码:

 <script type=”text/javascript”> var pageTracker = _gat._getTracker(”UA-11111-1″); pageTracker._setDomainName('domain.com'); pageTracker._setCookiePath('/subdirectory/'); pageTracker._trackPageview(); var otherTracker = _gat._getTracker(”UA-22222-1″); otherTracker._setDomainName('domain.com'); otherTracker._trackPageview(); </script> 

当您从一个域名链接到另一个域名时,每个发布到其他域名的链接都必须如下所示:

 <a href="pageTracker._linkByPost('otherdomain.com/petStoreCart/legalTerms.php');" 

这将添加Google Analytics特定的查询string值,以供上述脚本用于设置cookie( 源 )。

看起来谷歌推荐这种做法:

在单个网页上安装多个Google Analytics(分析)跟踪代码实例不是受支持的实现。 我们build议您删除除一个实例以外的所有实例,并确保您在每个想要跟踪的页面上安装了正确configuration文件中的代码。

https://support.google.com/analytics/bin/answer.py?hl=en-GB&answer=1032400

我在我们的网站和客户网站上使用了这种结构,它的function就像一个魅力…

 <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { //Original tracking var pageTracker_ORIG = _gat._getTracker("UA-XXXXXXX-1"); pageTracker_ORIG._setDomainName('.sleepinggiantmedia.co.uk'); pageTracker_ORIG._trackPageview(); //New Analytics tag var pageTracker_SGM = _gat._getTracker("UA-XXXXXXX-1"); pageTracker_SGM._setDomainName('.sleepinggiantmedia.co.uk'); pageTracker_SGM._trackPageview(); } catch(err) {} 
 var otherTracker = _gat._getTracker(”UA-22222-1″); otherTracker._setDomainName('domain.com'); otherTracker._trackPageview(); 

此人在Google Analytics(分析)帮助文件中遇到同样的问题。 我build议看看线程。 但是定期的GA不支持多个追踪器。

我喜欢Clicky自己,但它花钱。