Javascript 谷歌分析-跟踪多个属性,包括父属性

Javascript 谷歌分析-跟踪多个属性,包括父属性,javascript,google-analytics,cross-domain,event-tracking,Javascript,Google Analytics,Cross Domain,Event Tracking,我正在尝试为多个子域属性设置跟踪,同时将数据发送到主属性 现在,我们有以下设置: domain.com-UA-XXX-1 foo.domain.com-UA-XXX-2 bar.domain.com-UA-XXX-3 如果用户访问域“foo.domain.com”,我希望将数据发送到UA-XXX-1和UA-XXX-2以获取页面视图。据我所知,我需要将GA代码设置为: <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject'

我正在尝试为多个子域属性设置跟踪,同时将数据发送到主属性

现在,我们有以下设置:

domain.com-UA-XXX-1

foo.domain.com-UA-XXX-2

bar.domain.com-UA-XXX-3

如果用户访问域“foo.domain.com”,我希望将数据发送到UA-XXX-1和UA-XXX-2以获取页面视图。据我所知,我需要将GA代码设置为:

<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-XXX-1', 'auto');
ga('send', 'pageview');
ga('create', 'UA-XXX-2', 'auto',{'name': 'Foo'});
ga('Foo.send', 'pageview');
</script>

(函数(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]| |函数(){
(i[r].q=i[r].q | |[]).push(参数)},i[r].l=1*新日期();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(窗口,文档,“脚本”,“www.google-analytics.com/analytics.js”,“ga”);
ga(“创建”、“UA-XXX-1”、“自动”);
ga(‘发送’、‘页面浏览’);
ga('create','UA-XXX-2','auto',{'name':'Foo'});
ga('Foo.send','pageview');
对所有子域进行设置意味着,如果我转到UA-XXX-1,我将看到我设置的所有子域属性的混合数据,如果我转到单个子域,我将只看到这些特定属性的数据。简单

然而,我想弄清楚的是,在添加事件/转换跟踪之类的内容时,这是否是正确的方法

如果我有这样的链接:

<a href="teletubbies.com" onclick="ga('send','event','Teletubby','Tinkywinky','Click');">Teletubbies</a>

这只会将事件发送到UA-XXX-1属性,而不是设置的第二个属性UA-XXX-2,对吗?这是否意味着,对于每个跟踪代码,我需要添加两个单独的跟踪代码来发送事件跟踪,还是有更简单的解决方案

<a href="teletubbies.com" onclick="ga('send','event','Teletubby','Tinkywinky','Click'); ga('Foo.send', 'event', 'videos', 'predators');">Teletubbies</a>

以上所有内容都是正确的。是的,你需要发送两次点击,让它们出现在两个不同的属性中

如果您不太喜欢重复自己的操作,那么可以将两个send命令抽象为一个JavaScript函数,该函数始终将点击发送到两个属性

例如:

function runGACommand() {
  var mainTrackerArgs = [].slice.call(arguments, 0);
  var fooTrackerArgs = mainTrackerArgs.slice(0);

  // Sets the "Foo" name on the second set of arguments.
  fooTrackerArgs[0] = 'Foo.' + fooTrackerArgs[0];

  // Runs the command on both trackers.
  ga.apply(null, mainTrackerArgs);
  ga.apply(null, fooTrackerArgs);
}
现在,您可以将事件处理程序简化为:

<a href="teletubbies.com" onclick="runGACommand('send','event','Teletubby','Tinkywinky','Click');">Teletubbies</a>


它会将数据发送到两个属性。

Duh!不知道为什么我没有想到这么简单的事情。非常感谢。当我运行脚本时,我得到一个错误uncaughttypeerror:arguments.slice不是一个函数。但是,将第二行更改为“var mainTrackerArgs=Array.prototype.slice.call(arguments);”会对其进行排序;它就像一个数组。更新!