新的 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 || []; [...]”代码放置到不同的位置,但没有任何效果。
最佳答案
出于两个原因,您不应该将 GA 代码放入函数中:
- GA 的变量成为本地变量。它们需要在全局范围内使用。
- 只有在加载整个页面(从技术上讲是文档)时,您才调用该函数。这使得下载过程串行(击败异步分析的并行性)。
批评将外部 JS 用于 GA 代码的人在这里有点不对。在 js embed 中引入 async 属性,这是有道理的。我将此 GA 代码保存在外部 js 中,并将其异步嵌入到文档的头部。两个好处:
- 保持代码整洁(无内联 GA)
- 缓存 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)
})();
关于javascript - 将新的 Google Analytics 代码写入外部文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3870345/