您似乎正在运行您的 Google Analytics(分析)的旧的“传统”实施。
我强烈建议您至少升级到_gaq.push
支持 for 语法的异步代码段。就目前而言,您正试图将使用新语法的事件推送到使用另一种语法的旧实现中。
此处详细介绍了两者之间的区别:https ://developers.google.com/analytics/devguides/collection/gajs/asyncMigrationExamples
简而言之,您使用的是 gat/pageTracker 的语法,其中较新的异步语法使用 gaq。
请查看我从上述链接复制的代码:
_gaq.push(['_setAccount', 'UA-XXXXX-X']);
_gaq.push(['_trackPageview']);
...
<a onclick="_gaq.push(['_trackEvent', 'category', 'action', 'opt_label', opt_value]);">click me</a>
对于您现在使用的旧语法:
var pageTracker = _gat._getTracker('UA-XXXXX-X');
pageTracker._trackPageview();
...
<a onclick="pageTracker._trackEvent('category', 'action', 'opt_label', opt_value);">click me</a>
如您所见,您正尝试使用新的 ga.js 语法向旧的 ga.js 发送事件。我强烈建议使用异步加载的较新的 ga.js。通过异步,这意味着 javascript 在网页加载时加载,而旧的 ga.js 则没有。
这是较新的 ga.js 的示例实现,它应该在关闭之前实现</head>
:
<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>
如果您实施上述建议,那么您使用的是较新的 ga.js 并且_gaq.push
-syntax 应该可以工作。试试看!
如果你不知道异步部分是什么意思,简单解释一下:
最新版本的 Analytics 跟踪代码提供了一种使用 Google Analytics 跟踪网站访问者的改进方法。它利用浏览器对异步 JavaScript 的支持来提高加载跟踪代码的速度。使用最新版本的跟踪代码,您还可以将 Analytics 代码段放置在页面的较高位置,而不会延迟后续内容的呈现。
它会继续加载网页的其他元素,而不是等待 1 完成后再加载 2、3 等。