0

我有以下代码:

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 不会被设置的原因?

4

2 回答 2

1

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

<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>
于 2012-07-09T12:37:16.817 回答
0

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

添加延迟:

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

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

---来自此链接的上述代码片段的学分

或者更好的方法:

将是定义pagetracker onload

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

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

检查是否加载了 ga.js

您也可以这样做(而不是 try catch):

<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 语句之外。希望这可以帮助某人。

于 2014-04-03T08:54:46.213 回答