Google Analytics(分析)Cookie未在IF语句中加载

时间:2012-07-09 12:28:47

标签: javascript google-analytics

我有以下代码:

var selectedLevel = true;
if (selectedLevel === true) {
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

    try {
        var pageTracker = _gat._getTracker("UA-XXXXXXX-XX"); // <-- The ID _is_ here
        pageTracker._trackPageview();
    } catch(err) {}
}

我希望看到在FireCookie中设置cookie,但我什么都没看到。根据我的Firebug NET选项卡,ga.js似乎确实正在加载。

有没有人知道为什么不会设置cookie?

2 个答案:

答案 0 :(得分:1)

我怀疑因为try / catch块在同一个脚本中,所以在另一个脚本加载并失败之前正在执行获取跟踪器的行,因为_gat未定义。尝试将其放在自己的脚本块中,就像Google docs建议的那样。

<script type="text/javascript">
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
    try{ 
        var pageTracker = _gat._getTracker("UA-xxxxxx-x");
        pageTracker._trackPageview();
    } catch(err) {} 
</script>

答案 1 :(得分:0)

(另一种可能性)这有时会发生,因为 ga.js 尚未加载。你可以

添加延迟:

<script type="text/javascript">
    var pageTracker;

    setTimeout('startGA();', 500);
    function startGA()
    {
        pageTracker = _gat._createTracker("UA-XXXXXX-X");
        pageTracker._trackPageview(); 
    }
</script>

--- credits of above codes snippet from this link

或者更好的方式:

将定义pagetracker onload

<script type="text/javascript">
    var pageTracker;

    $(window).load(function(){ 
        pageTracker = _gat._createTracker("UA-XXXXXX-X");       
        pageTracker._trackPageview(); 
    });
</script>

检查ga.js是否已加载

你也可以这样做(而不是试试):

<script type="text/javascript"> 
    var pageTracker;

    if (typeof(_gat) == "object") { 
        pageTracker = _gat._createTracker("UA-XXXXXXX-X"); 
        pageTracker._trackPageview(); 
    } 
</script> 

请注意 - 我建议将var pageTracker的声明放在try-catch块或if / else语句之外。希望这有助于某人。