Google Analytics内部文档已准备就绪无法使用?

时间:2013-03-05 14:47:12

标签: javascript jquery html

关于为什么 有效的原因的快速提问:

<script type="text/javascript">

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

<script type="text/javascript">
$(function(){
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-Y']);
  _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>

阻止分析在文档准备好的情况下运行的是什么?

2 个答案:

答案 0 :(得分:3)

您需要将_gaq变量声明放入全局范围

<script type="text/javascript">
var _gaq = _gaq || [];
$(function(){
  _gaq.push(['_setAccount', 'UA-XXXXX-Y']);
  _gaq.push(['_trackPageview']);
  ...

或将window._gaq属性与google analytics一起使用

<script type="text/javascript">
$(function(){
  window.gaq = window._gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-Y']);
  _gaq.push(['_trackPageview']);
  ...

答案 1 :(得分:2)

这可能与Google本身加载到DOM中的JavaScript代码有关。哪个可能设置为在文档加载(或其他一些readystate / load事件)上运行。由于在DOM准备就绪时正在执行脚本(jQuery.load)GA将不会在已经触发的就绪事件时执行。

如果这不是问题,那么它可能是一个范围问题。