我在IE7和IE8中发现 _gaq未定义错误
我的剧本如下:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX']);
_gaq.push(['_setDomainName', 'yyy.com']);
_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>
我可以为_gaq指定默认值吗? Refer this link
答案 0 :(得分:7)
根据您对我的评论的回复,这个问题的答案是
几年前,Google Analytics(分析)采用了一种更新,更现代的处理事件的方式,允许浏览器加载完整的页面,而无需等待GA服务器的响应。在过去,您被引导将google提供的<script>
代码段放在页面末尾(就在关闭正文标记之前),现在您应该在<head>
的某处包含代码HTML部分。
新脚本的工作原理是将javascript变量_gaq
定义为数组,将其视为队列。您要跟踪的网页浏览量,事件和其他内容会被推送到阵列上,这实际上是即时的。有时间时,GA代码将检查数组中的内容并将其弹出,处理请求到GA服务器,直到数组为空。
_gaq
变量的副作用是脚本标记在引用之前必须位于HTML中,否则您将收到JS错误_gaq is undefined
。
例如as documented here in the Google Analytics event tracking guide您可能想知道用户何时在您的网站上播放视频,如下所示:
<a href="#" onClick="_gaq.push(['_trackEvent', 'Videos', 'Play', 'Baby\'s First Birthday']);">Play</a>
注意这里对变量_gaq
的引用。如果尚未定义,您将收到错误。
简短回答:将异步javascript片段放入HTML的<head>
。