可以通过AJAX加载Google Analytics吗?

时间:2011-07-15 12:18:59

标签: ajax load google-analytics

典型的Google Analytics代码(或者更确切地说 - 我被告知要添加的代码)如下所示:

<script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-123456-7']);
    _gaq.push(['_setDomainName', '.mydomain.example']);
    _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>

请注意ga.async = true;部分。这允许符合条件的浏览器异步加载脚本,但仍然有很多浏览器没有。我担心性能 - 我在尝试下载Google Analytics脚本时看到很多网页冻结了。如果我通过AJAX而不是eval()加载脚本,它会工作吗?我宁愿有一个没有跟踪的页面视图而不是没有加载的页面视图。

1 个答案:

答案 0 :(得分:2)

您可以将此脚本保存在javascript文件中,并在触发document.ready事件后加载该文件。这样它就不会阻止页面的加载。这就是我如何包含非必要的js和css文件(如jquery插件,ui等)。

假设您正在使用jquery,您也可以这样做:

<script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-123456-7']);
    _gaq.push(['_setDomainName', '.mydomain.example']);
    _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]; 
      $(document).ready(function(){
         s.parentNode.insertBefore(ga, s);
      });
    })();
</script>

注意:我没有测试过它。我只是在调用document.ready之后插入脚本元素。