在Chrome调试日志中查看网站页面时,会显示以下消息。
未捕获的ReferenceError:未定义_gaq
页面本身应该使用onload
事件处理程序跟踪对象,并为Google Analytics激发_trackEvent
。
我最好的猜测是,ga.js
文件可能无法及时加载,因此触发的onload
_trackEvent
未被捕获。在</body>
关闭之前使用异步代码段,对象位于中间<body>
。
(其他一些帖子也引用了jQuery的位置,但这可能是一个红色的鲱鱼)
非常感谢任何帮助。
答案 0 :(得分:34)
从https://developers.google.com/analytics/devguides/collection/gajs/开始,此代码会将您现有的“传统代码段”替换为“最新的异步版本,您应首先删除现有的跟踪代码段”。
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_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>
要查看您的活动(了解这是否有效),请在“报告”页面左侧的“实时”菜单选项下查找“活动”。
答案 1 :(得分:16)
关于异步代码段的位置,GA help page表示 -
将此代码段粘贴到您的网站模板页面中,以便显示 在结束
</head>
标记之前。
我的第一个想法是应该在页面底部加载JS以提高页面速度。但是,GA异步跟踪代码段应该加载到头部,因为它不会立即加载ga.js,并且它不会阻止页面执行。(它通过动态地将脚本标记添加到DOM来执行此操作。它在队列的后面。)
如果出于某种原因,您无法将异步代码段移动到头部,则可以自己定义_gaq
,如下所示 -
<button onclick="var _gaq = _gaq || []; _gaq.push(['_trackEvent', 'button3', 'clicked'])"/><button>
答案 2 :(得分:11)
有同样的问题。您必须定义_gaq
数组。只需在标题中添加Google Analytics脚本之后添加:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXX-X']);
_gaq.push(['_trackPageview']);
答案 3 :(得分:4)
您可以使用analytics.js的最新版本而不是ga.js
ga.js是一个遗留图书馆。如果您正在开始新的实施我们 建议您使用此库的最新版本analytics.js。 对于现有实现,请了解如何从ga.js迁移到 的analytics.js。
以下是一个例子:
ga('send', {
hitType: 'event',
eventCategory: 'Video',
eventAction: 'play',
eventLabel: 'cats.mp4'
});
答案 4 :(得分:0)
将跟踪代码更改为:
<script type="text/javascript">
var gaq;
var _gaq = gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_setDomainName', 'yourdomain.com']);
_gaq.push(['_setAllowLinker', true]);
_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>