检查Google Analytics _gaq对象是否已加载且可用

crm*_*cco 8 javascript jquery google-analytics typeof web-analytics

我的网站上有一些Google Analytics跟踪代码(GATC),可以_gaq.push在Google代码中触发对该方法的调用.

在GA不可用或未_gaq加载的情况下,我想确保页面上没有任何JavaScript错误.通过检查_gaq与'undefined'不同 - 这是否足以检查它是否可用并且是否是这个x浏览器?我看过Google的文档,但它没有提到任何相关内容.

我知道检查对象是否null,但我不确定是否有必要.

if (typeof(_gaq) !== 'undefined') {
   _gaq.push(['_trackEvent', 'Downloaded Video', 'Yes']); 
   _gaq.push(['rollup._trackEvent', 'Downloaded Video', 'Yes']);                                    
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*ike 50

如果您使用的是Universal Analytics(analytics.js),请切换:

_gaq.push(['_trackEvent', 'Downloaded Video', 'Yes']); 
Run Code Online (Sandbox Code Playgroud)

对此:

ga('send', 'event', 'Downloaded Video', 'Yes');
Run Code Online (Sandbox Code Playgroud)


Dav*_*ing 18

在您从分析中获得的推荐javascript代码中,它包含以下行:

var _gaq = _gaq || [];
Run Code Online (Sandbox Code Playgroud)

因此,如果您在代码中保留此行,则该数组应始终可用.如果您稍后要添加分析代码,只需在主脚本之前添加上面的行,它就会起作用.

请注意,即使您_gaq之前定义过此片段也是无害的,因为它只是将它定义为新的Array(如果之前未定义).

这是使用异步脚本的好方法,该数组首先在本地定义,您可以随时将命令推送到此数组.加载分析脚本后,它可以在需要时使用这些命令.因此无需检查数组是否未定义或类似.

  • 我不是说你应该重新定义它.我的观点是,如果您已经像文档中所说的那样添加了它,那么您就无法再检查未定义 - 而且您不需要. (3认同)