今天接到一个奇怪的需求,要给一个网站添加两套谷歌分析代码。按照个人对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。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
您也可以扫描左边的二维码,关注我们的微信公众号,在微信上查看我们的案例。
我按照文中方法尝试加了第二个GA跟踪ID,然而并没有跟踪到
谷歌代码加完都是第二天才能看到统计数据的
测试一下