“_gaq未定义”IE7和IE8中的Google Analytics错误

时间:2012-11-15 06:15:45

标签: javascript google-analytics google-analytics-api

我在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

1 个答案:

答案 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>