如何判断Google Analytics是否已加载

时间:2014-09-09 18:20:02

标签: javascript html google-analytics

我制作了很多javascript小部件。作为这些小部件的一部分,我们经常使用Google Analytics跟踪小部件中的操作。简化,我所做的是:

var setupGA = function(){ window._gaq.push(['_setAccount', 'UA-###']); };
if(window._gaq){
    setupGA();
} else {
    this.loadScript(GOOGLE_ANALYTICS_PATH, function(){
      var waitga = setInterval(function(){
          if(window._gaq){
              clearInterval(waitga);
              setupGA();     
          }
      }, 500);
    });
}  

GOOGLE_ANALYTICS_PATH是文件的本地路径,loadScript是加载脚本和执行回调的自定义方法。

随着Google更新其分析库(现在为analytics.js),确保已加载分析库的旧方法不再有效。 example code for google analytics有助于提供全局ga对象,但此对象可以具有自定义名称。有了旧队列检查,我想知道如何最好地检查是否存在analytic.js或ga.js版本的谷歌分析(我可以跳过很旧的Urchin跟踪类型)。

必须是这样的:

var setupGA = function(){ window._gaq.push(['_setAccount', 'UA-###']); };
if(window._gaq && !window.**ga**){
    setupGA();
} else {
    this.loadScript(GOOGLE_ANALYTICS_PATH, function(){
      var waitga = setInterval(function(){
          //_gaq will always be loaded for now
          if(window._gaq){
              clearInterval(waitga);
              setupGA();     
          }
      }, 500);
    });
} 

ga 是我可以检查的全局元素。我想这就是我要找的东西

2 个答案:

答案 0 :(得分:1)

通过更多的探索回答了我自己的问题。

使用新的Universal Analytics平台,似乎创建了一个窗口级变量。该变量称为 GoogleAnalyticsObject 。此对象将为您提供为容纳Universal Analytics对象而创建的变量名称

EX:  Using (window,document,'script','//www.google-analytics.com/analytics.js','ga'); will return "ga"
EX:  Using (window,document,'script','//www.google-analytics.com/analytics.js','notGA');  will return "notGA"

然后,您可以使用此变量来提取Google Analytics对象:

window[window.GoogleAnalyticsObject]

答案 1 :(得分:0)

另一种方法是打开浏览器控制台并在网络选项卡中查找跟踪请求。如果跟踪代码未成功加载,您将看不到向Google发送跟踪请求。

使用Universal Analytics(analytics.js),查找www.google-analytics.com/collect的请求

使用旧版代码(ga.js或urchin.js),查找__utm.gif的请求

如果您的浏览器使用像NoScript这样的脚本拦截插件,则除非您允许来自www.google-analytics.com的脚本,否则跟踪代码将无法运行