【发布时间】:2011-03-16 21:11:20
【问题描述】:
我正在尝试将异步版本的 Google Analytics(分析)跟踪代码添加到网站。
我想将 JavaScript 保存在一个单独的文件中,然后从那里调用它。
这是我目前的 .js 文件中的内容:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
function loadtracking() {
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_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);
})();
}
addLoadEvent(loadtracking);
这是我在母版页的 <head> 标记中得到的内容:
<script type="text/javascript" src="js/google-analytics.js" ></script>
但是,显然有一个问题,几天后,我无法获得统计信息!
有什么想法我需要改变吗?
谢谢, 尼尔
编辑:好的...在下面的一些反馈之后,我将添加 new 我的 .js 文件的当前内容。我会保持更新,以便如果/当这个问题得到解决时,它有望帮助其他尝试做类似事情的人。
var _gaq = _gaq || [];
function loadtracking() {
window._gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
window._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);
})();
}
loadtracking();
【问题讨论】:
-
这是否解决了您的问题?我遇到了同样的问题,尽管我在 .js 文件中全局定义了我的 var _gaq。谢谢。
-
据我记忆,是的。老实说,对于大多数应用程序,我建议您只遵循以下建议并将代码直接放在文档中......这个特定项目的要求是它位于一个单独的文件中,这可能是也可能不是你的情况。
-
我已经阅读了很多关于 SO 的类似主题,并且看到人们说除了加载脚本可能会出现轻微延迟之外没有任何问题,而其他人则说它会毁了我的生命,并谴责我下地狱。我需要它根据正在查看的页面传递差异值,并且希望将代码更改保留在单个文件中而不是网站的每个页面上。它似乎工作正常,但如果你能记住你遇到的任何问题,请告诉我。欣赏它。
标签: javascript asynchronous google-analytics unobtrusive-javascript