我可以将Google分析放在外部JS吗?

时间:2011-03-05 16:02:25

标签: javascript google-analytics

<script type="text/javascript">

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

除了缓存问题(如果我更改跟踪ID),还有什么我需要注意的吗?它还能运作吗?它建议把它放在</head>之前,我所有的其他JS都在</body>之前,是否可以把它放在那里?

2 个答案:

答案 0 :(得分:5)

除了可能需要更改跟踪代码之外,我能想到的唯一潜在问题是,在该方案中,不会跟踪在请求该文件和何时到达之间的访问者。或者,如果由于某些奇怪的原因,外部脚本无法加载,您将无法跟踪该用户。除此之外,您可以安全地将其包含在外部脚本中。

答案 1 :(得分:2)

所有这些代码确实是找到DOM中的第一个脚本元素,并在它之前放置一个新的脚本元素。新的脚本元素几乎等同于:

<script type="text/javascript" async src="https://ssl.google-analytics.com/ga.js">

在HTTPS页面上,并且:

<script type="text/javascript" async src="http://www.google-analytics.com/ga.js">

在HTTP页面上。

它可以在页面的任何位置,头部和身体中正常工作。此外,它不会减慢你的页面渲染速度,如果它在头部,所以你放在哪里并不重要。

唯一的区别是,当您将其纳入头部时,您可以轻松地将Google Analytics帐户与该网页的Google网站站长工具相关联,如果它在正文中,那么您必须使用其他形式的验证来证明它是你的网站。

将它放在一个外部文件中,如果它不在缓存中,则意味着再多一个HTTP请求,如果它在缓存中,可能只会保存几行代码,但是你不能轻易地改变跟踪ID任何给定的页面。

除此之外,我会小心将它放在外部脚本中,因为它可能违反了服务条款。