给网站添加两套以上谷歌分析代码

今天接到一个奇怪的需求,要给一个网站添加两套谷歌分析代码。按照个人对JS的感觉,直接复制粘帖两段谷歌分析给出的官方代码,会牵涉到对象的不规范重复调用,即使页面不报错,也一定会影响分析数据。既然是谷歌的问题,自然只能到谷歌去找答案。结果倒是也很快找到了。

首先,谷歌官方系统生成的统计代码是这样的,其中UA-×××××××-×是你自己的谷歌分析账号:

1
2
3
4
5
6
7
8
9
<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-×××××××-×', 'auto');
  ga('send', 'pageview');
</script>

其中上半部分是通用的JS文件调用,只要写一遍就可以了。我们要改造的是最后两行代码,按照下面的规律改:

1
2
3
4
5
6
7
ga('create', 'UA-×××××××-×', 'auto');
ga('create', 'UA-yyyyyyy-y', {'name':'b'}); //这里的UA-yyyyyyy-y替换成你的第二个谷歌分析账号,'b'可以改成任意值,以下类同
ga('create', 'UA-zzzzzzz-z', {'name':'c'});
 
ga('send', 'pageview');
ga('b.send', 'pageview'); //b可以改成任意值,只要和第二行一致即可,以下类同
ga('c.send', 'pageview');

这样同一个页面就支持多个谷歌分析账号了。
参考文章:http://www.tjkelly.com/blog/google-analytics-two-tracking-codes-on-same-page-2014/

最后你一定会问,谷歌可以了这么做,那么百度统计呢?
百度官方的说明里面没有说一个页面可不可以放两段统计代码。看一下百度统计代码:

1
2
3
4
5
6
7
8
9
<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "//hm.baidu.com/hm.js?c999999999999999999999"; //这里是账号参数
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>

粗看感觉只是建立了一个script标签,对hm.baidu.com/hm.js这个文件加上加账号参数进行调用。但最后两行的意思是把这段js调用移到页面的第一个script标签前。这样霸道粗放的做法有可能就是为了避免函数或对象名的冲突,让统计尽快完成(我先完成我的工作,你页面上其他地方冲突我也当没看见…)。如此我推测如果这样的代码执行两遍,两段代码就会打架,有可能会影响统计数据。

以上对百度统计代码的分析大部分靠臆测,没有亲自试验过。嗯,百度上搜IT问题你也知道是一件极不靠谱的事情。所以,最好由你亲自用两段百度统计代码测试一下自己的网站,然后回来告诉我答案:P

本站所有文章均为原创,欢迎转载,请注明文章出处:https://blog.brain1981.com/1146.html。百度不可信,搜索请谨慎。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以获取本文的最新版本。

关注我们的微信公众号-JennyStudio 本站记录了近几年的工作中遇到的一些技术问题和解决过程,“作品集”还收录了本人的大部分作品展示。除了本博客外,我们的工作室网站 – JennyStudio,内有更多作品回顾和展示。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。

3 关于 “给网站添加两套以上谷歌分析代码” 的评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注