Nodejs 为什么我从 Google 统计上创建 Profile 获得的代码和文档上不一样

Nodejs 为什么我从 Google 统计上创建 Profile 获得的代码和文档上不一样

我得到的代码是这样的, 中间步骤似乎没有其他的选项的:

<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-省略', 'jiyinyiyong.github.io');
  ga('send', 'pageview');

</script>

而 Google 文档上给的是:

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-Y']);
  _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>

请问这是怎么回事啊?


4 回复

您的问题涉及到Google Analytics的两种不同的实现方式。一种是旧版的_gaq方法,另一种是新版的gtag.jsanalytics.js方法。这两种方法的主要区别在于它们如何初始化和发送数据到Google Analytics。

为什么会有不同的代码?

  1. 版本差异:Google Analytics有多个版本,包括经典版(使用_gaq)和新的Universal Analytics(使用gtag.jsanalytics.js)。如果您从Google Analytics界面获取的代码是旧版的_gaq代码,那么它可能是因为您使用的是较旧的设置或配置。但是,现在推荐使用的是gtag.jsanalytics.js

  2. 文档更新:Google可能会根据其服务的变化不断更新文档。因此,您看到的文档上的代码可能已经是最新的推荐做法。

示例代码

使用 gtag.js

<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'GA_MEASUREMENT_ID');
</script>

使用 analytics.js

<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','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-省略', 'jiyinyiyong.github.io');
  ga('send', 'pageview');
</script>

解释

  1. gtag.js

    • 使用gtag函数来初始化和配置跟踪。
    • 更加简洁且易于管理多个Google Analytics账户。
  2. analytics.js

    • 使用ga函数来创建和发送跟踪事件。
    • 需要手动插入脚本并调用ga函数。

总结

建议您使用最新推荐的方法(如gtag.js),因为Google通常会停止支持旧的API,并推荐使用新功能。确保您的代码与当前的最佳实践保持一致,以获得最佳性能和兼容性。


第一个代码优化过,账户名也不一样了。是Google Analytics的新接口吧。

照说文档上应该有才对, 如果是新接口那也应该很容易找到的

这个问题主要是由于Google Analytics不同版本之间的差异导致的。你从Google统计中获取的代码是基于新的Google Analytics(Universal Analytics)的实现方式,而文档上的代码则是基于旧版本(经典Google Analytics)的实现方式。

以下是两种实现方式的简要说明:

Universal Analytics (你的代码)

(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-省略', 'jiyinyiyong.github.io');
ga('send', 'pageview');

这里使用了ga函数来创建和发送跟踪数据。这是一套全新的API,适用于更现代的应用场景,包括单页应用等。

Classic Google Analytics (文档中的代码)

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-Y']);
_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);
})();

这里使用了一个全局变量_gaq来存储跟踪命令,然后通过加载一个脚本来执行这些命令。

结论

这两种方法都有效,但Universal Analytics更为现代,提供了更多功能。如果你需要兼容旧版浏览器或有特殊需求,可以选择Classic版本。如果你的应用是现代的Web应用或者单页应用,建议使用Universal Analytics。

回到顶部