55

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

当然,如果 Google 提供了一种将 cookie 名称更改为自定义名称的方法,那将是最简单的,但我找不到任何方法来做到这一点。我考虑过使用 cookie 域或路径来强制使用单独的 cookie,但这不起作用,因为如果我将域或路径设置为真实域/路径以外的内容,则重新加载后页面无法读取 cookie。 ..

有谁知道在一个页面上有两个跟踪器并让它们使用单​​独的 cookie 的方法,这样它们就不会覆盖彼此的设置?

或者,如果这完全不可能 - 是否有任何其他具有与 GA 类似功能的分析服务可以做到这一点?(它必须具有事件和活动跟踪等高级功能......)

4

9 回答 9

56

现在使用新的异步跟踪代码变得容易。:)

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

于 2010-01-06T13:24:26.153 回答
18

您可以在网页上安装多个 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>
于 2014-02-05T03:05:45.457 回答
10

不必使用不同的 cookie 名称,因为 Google Analytics 很乐意在同一页面上使用多个跟踪器。查看问题的答案Google Analytics - 多个帐户的多个跟踪器?.

更新

事实证明,使用多个跟踪器是一种可行的方法,但存在一些缺陷。其中之一,即您不能为每个用户应用不同的用户细分。John Henson 演示了一种强制 GA 使用不同 cookie的解决方法,您可能应该检查一下。

于 2009-08-18T14:09:27.200 回答
8

如果有人仍然有这个问题并且想要一个简单的粘贴,我的问题是使用我自己的谷歌跟踪我的代码被添加到可能也使用谷歌跟踪的其他人的页面。我已经对此进行了测试并确认它按预期工作:

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']);

如果有人看到它有问题,请告诉我。

于 2013-01-18T23:47:34.123 回答
3

谷歌似乎不建议这种做法:

不支持在单个网页上安装多个 Google Analytics 跟踪代码实例。我们建议您删除除一个以外的所有实例,并确保您在要跟踪的每个页面上都安装了正确配置文件中的代码。

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

于 2012-09-13T20:38:53.840 回答
3

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

来自网站的示例代码:

<script type=”text/javascript”&gt;
    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 特定的查询字符串值,上述脚本将使用这些值来设置 cookie(source)。

于 2009-11-02T11:10:21.697 回答
1

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

<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) {}

于 2011-01-27T14:13:48.780 回答
-2
var otherTracker = _gat._getTracker(”UA-22222-1″);
otherTracker._setDomainName(’domain.com’);
otherTracker._trackPageview();
于 2009-12-31T14:40:58.897 回答
-3

这个人在 Google Analytics 帮助中遇到了同样的问题。我建议看一下线程。但通常 GA 不支持多个跟踪器。

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

于 2009-08-06T14:01:48.820 回答