2010-10-06 131 views
14

新的谷歌Analytics(分析)的代码看起来像一个下面:新的谷歌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> 

如何在全新的谷歌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 || []; [... ]“代码到各个位置,但没有任何工作。

回答

2

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

8

再说:把你的谷歌的异步代码段在外部文件,因为它会从网上下载的其他内容。具有异步跟踪代码的要点是使其与并行

如果使用异步GA只是把它放在顶部你在内嵌脚本标签记录。这是Google Analytics website推荐还有:

底部的 页的<head>部分的插入异步代码,任何其他脚本后您的 网页或模板可能使用。

17

你不应该把GA代码的功能有两个原因:

  1. GA的变量成为当地。他们需要在全球范围内使用。
  2. 只有当整个页面(文档,技术上)被加载时才调用函数。这使得下载过程序列化(击败异步分析的并行性)。

批评外部JS用于GA代码的人在这里有点不对。在js嵌入中引入异步属性,这是有道理的。我将这个GA代码保存在外部js中,并将其嵌入到文档头部。两个好处:

  1. 保持代码整洁(无内嵌GA)
  2. 缓存的js-节省带宽&加载速度更快

所以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) 
})(); 
+0

感谢您的编辑。这是我的第一篇文章。 – 2012-10-29 14:29:31

+0

问题是如果外部文件中的这个小JS代码值多一个请求...我认为它不是。 – 2014-07-28 08:27:04

+0

那么您的代码提案是否可以使用有效的解决方案? – 2016-04-16 10:48:10

相关问题