在阅读博客文章后,我想到了添加安全代码以确保Google Analytics对象在调用它的函数之前已完全加载。
Typicle Google Analytics代码类似于:
var pageTracker = _gat._getTracker("X-UAXXXXX");
pageTracker._trackPageview();
和
pageTracker._addItem( bla bla );
pageTracker._trackTrans();
我想到了两个选项,以确保在使用前加载_gat对象:
1)使用JQuery.ready来调用_get-functions。类似的东西:
$(document).ready(function() {
var pageTracker = _gat._getTracker("X-UAXXXXX");
pageTracker._trackPageview();
}
或
2)使用JavaScript超时
function checkGat() {
if( gat_is_ready ) {
var pageTracker = _gat._getTracker("X-UAXXXXX");
pageTracker._trackPageview();
} else {
setTimeout('checkGat()', 1000);
}
}
checkGat()
什么是更好的解决方案?为什么?和任何其他评论?
答案 0 :(得分:0)
这都是不必要的。只需使用新的Google Analytics Asynchronous Code;它为你做到了这一点。
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_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>
使用此代码,您可以根据需要在页面的早期将跟踪信息存储在JavaScript数组(称为_gaq)中。然后,只有在加载并准备好ga.js后,它才会执行对Google Analytics的调用。换句话说,它可以为您完成所有这些操作,而无需编写复杂的循环,并且您将永远不会遇到导致JavaScript错误的竞争条件。
这具有非阻塞性的附加好处,因此速度稍快。