2009-08-06 98 views
54

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

当然,如果Google提供了一种将cookies的名称更改为自定义名称的方法,那将是最容易的,但我找不到任何方法来执行此操作。我想过使用cookie域或路径来强制一个单独的cookie,但这不起作用,因为如果我将域或路径设置为除真实域/路径以外的其他内容,则该cookie在重新加载后对该页面不可读。 ..

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

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

+2

为什么你应该访问不属于你的网站的访问者数据?你的组件如何嵌入? – pjp 2009-08-06 14:02:19

+6

因为我想知道如何使用小部件。这真是一个多窗口小部件嵌入网站,“小部件”表明一些小事情,不用复杂...... 它嵌入插入到网站,然后widget的GUI是动态的Javascript创建,在下载使用AJAX(各种数据JSONP),并且它应该使用Google Analytics(分析)跟踪用户在小部件内部的操作。 – 2009-08-06 14:34:57

回答

56
+1

感谢您的信息! – 2010-01-11 20:33:15

+9

更新后的链接:http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide。html#MultipleCommands – cope360 2011-06-28 18:09:00

+4

不是那么容易,在简单的情况下,它可以工作,但你应该beareful:请参阅Torok的帖子中的链接 - 谷歌不建议在同一页上的多个分析帐户:https://developers.google.com/analytics/资源/概念/ gaConceptsCookies?hl = nl-NL =如果您有多个帐户跟踪相同的网络媒体资源(例如一页或多组网页),那么这两个帐户都会读取并设置相同的一组Cookie。一般不建议这样设置。 – 2012-05-22 23:04:38

-3

This person在Google Analytics帮助fourm上遇到同样的问题。我建议看看线程。但定期的GA不支持多个追踪器。

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

+0

是啊,我看到了,但它看起来像建议的解决方法是下载GA脚本,并攻击它,或从外部入侵其内部的变量 - 这两者听起来危险和不稳定的... – 2009-08-06 14:36:30

10

不必使用不同的cookie名称,因为Google Analytics(分析)可以在同一页面上与多个跟踪器愉快地合作。查看问题的答案Google Analytics - Multiple Trackers for Several Accounts?

更新

事实证明,使用multiple trackers is a working method but has some pitfalls。其中之一,也就是说,您不能为每个用户分别应用不同的用户分段。约翰亨森演示了一个解决方法,coerces GA to use different cookies,可能是你应该检查它。

+0

我不太确定。如果这两个跟踪器的调用_setVar设置自定义跟踪变量,似乎只有从第二跟踪变量可以在饼干中找到,并从第一跟踪器的一个迷路。除非我做错了什么... – 2009-08-19 09:23:58

+0

@Psionides:它似乎这是事实 - 到目前为止我一直使用相同的设置不同的跟踪器。我更新了我的答案。 – 2009-08-19 11:52:20

3

根据Török列出的documentation,似乎正确的答案是使用_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');" 

这将增加谷歌分析特定的查询字符串值,以供上述脚本用于设置Cookie(source)。

+0

是的,但它不能跨域使用 - 我无法为位置栏中显示的其他域设置Cookie。因此,如果我的小部件嵌入在例如http://website.com,脚本从http://widget.com加载,然后我只能为http://website.com设置cookie(嵌入网站也是这样) - 我们仍然有冲突。 – 2009-11-06 09:37:20

+0

为跨域链接添加了更多信息。 – 2009-11-07 06:07:04

-2
var otherTracker = _gat._getTracker(”UA-22222-1″); 
otherTracker._setDomainName(’domain.com’); 
otherTracker._trackPageview(); 
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) {} 

8

如果还有人有这个问题,并希望有一个简单的贴,我的问题是用我自己的谷歌对我的代码跟踪正被添加到别人的网页也可能会使用谷歌追踪。我测试了这一点,并确认它按预期工作:使用事件

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

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); 
})(); 

我用的也是人若看见一个问题吧,请让我知道。

+2

这对我来说非常合适 - 简单而有效。 – arlomedia 2013-04-23 04:42:25

+0

谢谢arlomedia。自从这个页面以及许多其他的解决方案相当复杂之后,我们花了一段时间才弄清楚。 – 2013-05-31 15:52:33

18

您可以安装谷歌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> 
相关问题