我有以下代码:
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?
答案 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>
你也可以这样做(而不是试试):
<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语句之外。希望这有助于某人。