在旧版Google Analytics中,您只需在JavaScript文件的顶部添加var _gaq = _gaq || [];
,这样就可以在GA完全加载之前推送事件和事务。
使用Universal Analytics,您不再使用.push()
,那么在外部文件中创建ga
对象的正确方法是什么,其中Google Analytics可能尚未加载,但您需要推送事件和交易?
答案 0 :(得分:10)
Google Analytics摘要中的“立即调用的函数表达式”处理该对象的创建。在代码段中,您会看到以下内容:
i[r] = i[r] || function() {
(i[r].q = i[r].q || []).push(arguments)
}
我们从传递给IIFE的参数知道i = window和r =“ga”:
(function(i, s, o, g, r, a, m) {
//...
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
在un-uglyfied JavaScript中,代码段如下:
window['ga'] = window['ga'] || function() {
( window['ga'].q = window['ga'].q || []).push(arguments)
}
因此,通过调用全局函数ga
,您实际上是在创建一个充当队列的数组(如果它尚不存在)并将值推送到队列中。
在Universal Analytics中,调用此功能:
ga('create', 'UA-XXXX-Y', 'auto');
与之前版本的GA中的相同:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXX-Y']);
可以在Google dev docs中找到更多信息。
答案 1 :(得分:2)
您无需重新定义ga
功能,因为它已在跟踪代码段中定义。您所要做的就是使用外部文件中的ga
对象,您就可以了。 ga
已经是一个全局对象,因此无需对其进行范围化。
在至少运行创建跟踪器的行之前,您也不希望将任何内容推送到ga
对象中:
ga('create', 'UA-XXXX-Y', 'auto');
如果您有机会点击将无法通过,并且无法访问您的帐户。
确保您使用的任何外部文件都包含在您网站中的跟踪代码段之后,或者可能在顶部的外部文件中包含跟踪代码段。
答案 2 :(得分:2)
这是我在外部js文件中使用的内容,它似乎正在工作和跟踪。请注意,要跟踪事件内容,您可以使用GA帐户中的实时事件标签确认其有效。
我也在这里跟踪出站事件。注意:我花了2天的时间来完成此绑定事件跟踪工作。在你的onclick事件中确保你使用''这些单引号。我从这个页面https://support.google.com/analytics/answer/1136920?hl=en复制了代码,并且那里的引号实际上是一个破坏脚本的不同字符,所以从键盘输入引号。
我想将我的GA代码放在外部文件中,因为我有所有旧的经典代码,现在Google已经转移到了Universal,我不得不去每个页面对Google spinet进行更改。我认为,更聪明的是集中它,将来会有更改。
在我的头标记
<script type="text/javascript" src="/web_resources/themes/OldsCollege/js/scripts.js" async></script>
在我的js文件中;
/*Analytics*/
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-616432-1', 'auto');
ga('send', 'pageview');
var trackOutboundLink = function(url, action) {
ga('send', 'event', 'outbound-26th', action, url, {'hitCallback':
function () {
document.location = url;
}
});
}