使用新的 analytics.js 语法进行跨域跟踪?
Posted
技术标签:
【中文标题】使用新的 analytics.js 语法进行跨域跟踪?【英文标题】:Cross domain tracking with new analytics.js syntax? 【发布时间】:2013-09-26 22:59:51 【问题描述】:我正在使用 Google Analytics,我正在尝试为我的网站设置跨域跟踪。我已经阅读了谷歌的cross domain tracking guide,但我对如何正确实现它感到困惑。
我遇到的问题是,他们提供的示例代码与我通过 Google Analytics(分析)管理控制台提供的跟踪代码完全不同。
我的跟踪代码如下所示:
<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', 'MyTrackingID', 'MyDomain');
ga('send', 'pageview');
</script>
(我的实际跟踪 ID 和我的域已分别以 MyTrackingID
和 MyDomain
进行审查。)
但是,指南中给出的示例跟踪代码如下所示:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_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);
)();
</script>
如何按照说明将_gaq.push(['_setDomainName', 'A.com']);
“选项”添加到我的跟踪代码中?
【问题讨论】:
谷歌参考在这里:developers.google.com/analytics/devguides/collection/… 【参考方案1】:此代码对我有用。它适用于 Universal Analytics,而不是旧的 Google Analytics。假设您有两个域:source.com 和 destination.com,并且您想跟踪这两个域:
在 source.com 上:
<!-- Universal Analytics -->
<script type="text/javascript">
(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-XXXXXXXXX-X', 'source.com', 'allowLinker': true);
ga('require', 'linker');
ga('linker:autoLink', ['destination.com']);
ga('send', 'pageview');
</script>
在destination.com上:
<!-- Universal Analytics -->
<script type="text/javascript">
(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-XXXXXXXX-X', 'source.com','allowLinker': true);
ga('send', 'pageview');
</script>
【讨论】:
我对源和目标的 ClientID 有疑问。我应该为两个 sn-ps 使用相同的 clientID 还是每个网站都应该有自己的 clientID ? source.com 和 destination.com 中的客户端 ID (UA-XXXXXXX-X) 必须相同。【参考方案2】:脚本添加到 sn-p provided by Google
在您需要添加的域上
ga('require', 'linker'); // Load the plugin.
// Define which domains to autoLink.
ga('linker:autoLink', ['3-party.com', '3-party-domain.com']); //add as many as you need third party sites
在第三方域上将现有的create
函数更新为
ga('create', 'UA-XXXXXX-X',
'allowLinker': true
);
Google 提示:虽然此功能旨在为大多数网站自动运行,但某些页面可能会以阻止自动链接正常运行的方式编写脚本。
【讨论】:
【参考方案3】:下面是正确的实现,这对我自己来说是完美的 -
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-1']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_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);
)();
</script>
设置域,可以加-
_gaq.push(['_setDomainName', 'A.com']);
以下
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
【讨论】:
根据 Google 提供的示例,这是ga.js
API/语法的正确实现。但这并不能回答我的问题。我在问如何使用 Google 似乎希望新用户使用的新 analytics.ja
API/语法设置跨域跟踪。
好的,我知道您想使用新的 analytics.js。请注意,这目前是公开测试版。您可以查看此链接以了解跨域的自动链接 - developers.google.com/analytics/devguides/collection/…以上是关于使用新的 analytics.js 语法进行跨域跟踪?的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Analytics 中使用 Hashtag # 新的 analytics.js 跟踪代码