新的Google Analytics代码到外部文件中

时间:2010-10-06 07:39:49

标签: javascript jquery html google-analytics

新的Google Analytics代码如下所示:

<script type="text/javascript">

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

如何将全新的Google Analytics异步跟踪代码移动到外部JavaScript文件中?

我特别要问“var _gaq = _gaq || []; [...]”因为我知道可以移动其余部分,例如。

的index.html

<script type="text/javascript">

 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-0000000-00']);
 _gaq.push(['_trackPageview']);

</script>
<script src="include.js" type="text/javascript"></script>

include.js

function includeGA()
{
 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);
}

$(document).ready(function()
{
 includeGA();
});

我已经尝试将“var _gaq = _gaq || []; [...]”代码放到不同的位置,但没有任何效果。

4 个答案:

答案 0 :(得分:17)

您不应将GA代码置于功能中,原因有两个:

  1. GA的变量变为本地变量。它们需要在全球范围内使用。
  2. 只有在加载整个页面(文档,技术上)时才调用该函数。这使得下载过程成为串行(破坏了asyn分析的并行性)。
  3. 批评使用外部JS进行GA代码的人在这里有点不对。通过在js embed中引入 async 属性,它是有道理的。我将这个GA代码保存在外部js中,并将其异步嵌入到文档的头部。两个好处:

    1. 保持代码整洁(无内联GA)
    2. 缓存js-节省带宽&amp;加载更快
    3. 所以HTML会变成:

      <head>
          <script type="text/javascript" src="static/scripts.js" async></script>
      </head>
      

      scripts.js将有:

      var _gaq=_gaq||[];
      _gaq.push(['_setAccount','UA-XXXXXXXX-1']);
      _gaq.push(['_setDomainName','.domain.net']);
      _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)
      })();
      

答案 1 :(得分:8)

然后再次:将您的Google Async代码段放在外部文件中,因为它会阻止下载其他内容。拥有异步跟踪代码的要点是使其并行

如果您使用异步GA,只需将其放在内联脚本标记中的文档的顶部中。这也是Google Analytics website上的推荐

  

将异步代码段插入   您的<head>部分的底部   页面,在你的任何其他脚本之后   页面或模板可能会使用。

答案 2 :(得分:6)

这似乎与此问题类似:Using Google Analytics asynchronous code from external JS file

似乎将代码推送到外部文件中会消除新的异步代码的好处。

答案 3 :(得分:2)

我不明白为什么你不能把它放在include.js中的“function includeGA()”之上。实际上,我不明白为什么你不能将整个谷歌脚本直接复制到include.js(没有$ workaround)。这应该由script-include标记内联,对吧?