Google Analytics不会调用__utm.gif,但不会抛出任何错误消息

时间:2011-10-27 17:45:47

标签: javascript google-analytics

我遇到了谷歌分析的问题。我知道那里有很多,但找不到解决方案。

我想将用户的电子邮件地址记录为Google Analytics中的自定义变量。我在一个函数中有google analytics片段,并传入用户的电子邮件地址。

GA插件不会向控制台窗口输出任何内容。

没有javascript错误。

我通过断点逐步完成代码,下面的函数一直运行完成。它进入if语句等。

文件ga.js加载成功,但__utm.gif文件未被调用。

    <script type="text/javascript">
    //<![CDATA[        
    function googleTrack(email) {
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'xyz']);
        _gaq.push(['_trackPageview']);

        if ((parent == null) || (!parent.IsCMSDesk)) {
            //track user name
            _gaq.push(['_setCustomVar', //1, \"Email address\", \"{0}\", 3)
                1,                   // This custom var is set to slot #1.  Required parameter.
                'email_address',     // The name acts as a kind of category for the user activity.  Required parameter.
                email,               // This value of the custom variable.  Required parameter.
                3                    // Sets the scope to page-level.  Optional parameter.
                ]);

            //if googleCustomVar is defined, it will track it. if not, won't
            if (!((typeof (window.googleCustomVar) === "undefined") && (typeof (googleCustomVar) === "undefined"))) {
                _gaq.push(['_setCustomVar', //1, \"Email address\", \"{0}\", 3)
                2,                   // This custom var is set to slot #1.  Required parameter.
                'section',     // The name acts as a kind of category for the user activity.  Required parameter.
                googleCustomVar,               // This value of the custom variable.  Required parameter.
                3                    // Sets the scope to page-level.  Optional parameter.
                ]);
            }
        }

        (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);
        })();
    }

    googleTrack('testm@healthed.com');
    //]]>
</script>

如果我只是这个代码,那么所有的事情都会再次发挥作用:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'xyz']);
_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);
})();

这里什么不起作用?最终目标是能够调用一个功能,将用户的电子邮件地址作为Google分析中的自定义变量进行跟踪。

1 个答案:

答案 0 :(得分:4)

您将_gaq定义为函数内的局部变量。因此,Google Analytics代码无法读取变量。原始代码使用var工作,因为它在本地范围内执行。要在函数内声明全局范围中的变量,请省略var或使用window._gaq = ...

你破碎的代码:

<script type="text/javascript">
//<![CDATA[        
function googleTrack(email) {
    var _gaq = _gaq || [];      //<--- `var` inside a function = local variable

修正了工作代码:

    _gaq = _gaq || [];