我有一个网站,我正在使用新的Universal Analytics(analytics.js)进行跟踪。使用以下代码片段设置和工作(网页浏览,推介等):
<script>
(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-39570713-1', 'site.com');
ga('send', 'pageview');
</script>
它位于</head>
标记之前。
我正在使用JQuery来发起一个事件。我用一条警告消息测试了JQuery并且它被调用了,所以这不是问题所在。以下是单击按钮时触发的片段:
$('#submitButton').on('click', function() {
ga('send', 'event', 'button', 'click', 'contact form');
});
Google Analytics的“事件”部分中没有显示任何内容。我一直点击按钮,即使是从不同的计算机,只是为了确保它不排除我的IP地址。由于Google提供的Analytics doc并未提供大量解释,因此我不知所措。
答案 0 :(得分:88)
如果您使用的是 Google跟踪代码管理器,并且还希望通过代码触发某些事件,则ga('send'...)
似乎不够。您需要先获取适当的分析对象:
if ("ga" in window) {
tracker = ga.getAll()[0];
if (tracker)
tracker.send("event", "Test", "Test GA");
}
请注意,这假设您在网站上仅使用一个Google Analytics跟踪代码。如果您碰巧使用多个,则可能需要按名称或索引获取适当的。
答案 1 :(得分:7)
对于GA,目前... 对我来说,在SPA中发送新页面的外观终于像这样:
if (window.ga){
window.ga.getAll()[0].set('page', location);
window.ga.getAll()[0].send('pageview')
}
这恰好显示了GA报告中想要的内容,例如新页面已被命中,标题全部正确。
答案 2 :(得分:6)
出于测试目的,您还可以使用hitCallback方法:
ga('send', {
'hitType': 'event',
'eventCategory': 'button',
'eventAction': 'click',
'eventLabel': 'contact form',
'hitCallback' : function () {
alert("Event received");
}
});
更新:逗号丢失。
答案 3 :(得分:4)
我遇到了完全相同的问题。我必须创建一个新属性并选择“Universal Analytics”而不是“Classic Analytics”(它标记为“beta”)。现在可以正确捕获事件。
答案 4 :(得分:3)
我遇到了同样的问题,而且我认为我已经找到了解决方案,但它确实让我对口碑有了不好的看法。
我必须做的是明确使用同步分析API。因此,不要在<head>
标记中包含常规代码段,请使用以下代码:
<script src="//www.google-analytics.com/analytics.js"></script>
<script>
tracker = ga.create('UA-XXXXXXX-1', 'example.com');
tracker.send('pageview');
</script>
然后您调用事件跟踪代码:
tracker.send('event', 'Category', 'Action', 'Label');
这将确保在用户导航开始加载的页面之前将跟踪信号发送到Google 并确认。
这表明Universal Analytics需要某种额外的确认,而不是旧的ga.js
分析代码所需的确认。因此,当您将事件附加到将用户带到另一个页面的单击时,无法发送该确认,因为浏览器已离开页面并删除了当前的javascript执行堆栈。
也许这个问题特定于某些执行环境(我在OSX Mountain Lion上使用Chrome 34),这可能解释了为什么更多的开发人员没有注意到这个问题。
答案 5 :(得分:3)
在我的情况下,问题是阻止分析脚本加载的uBlock Origin。
答案 6 :(得分:1)
我看不出代码本身有什么问题。您是否尝试过使用备用事件跟踪?
ga('send', {
'hitType': 'event', // Required.
'eventCategory': 'button', // Required.
'eventAction': 'click', // Required.
'eventLabel': 'contact form'
});
我还建议使用GA Debug Chrome插件测试网站,这样您就可以看到跟踪信号是否已发送。
截至目前,Universal Analytics的“官方”调试文档仍然缺失,但希望很快就会添加,因为ga_debug.js提供了很多有用的方法来找出Google Analytics实施的错误...答案 7 :(得分:1)
今天我需要第一次设置分析,我发现自己遇到了同样的麻烦。
我发现处理多个跟踪器以避免getAll()
的麻烦方式是:
<script>
(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','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-xxxxxx-y', 'auto', 'tracker');
ga('tracker.send', 'pageview');
ga('tracker.send', 'event', 'test', 'click', 'automaticEvent')
请注意,您必须将“名称”传递给create方法,然后使用ga([trackerName].send, ...)
参考:https://developers.google.com/analytics/devguides/collection/analyticsjs/accessing-trackers
答案 8 :(得分:1)
新版本的分析功能具有新的语法。替换下面的行;
ga('send', 'event', 'button', 'click', 'contact form');
与此;
gtag('event', 'click', {'event_category' : 'button',
'event_label' : 'contact form'});
参考; https://developers.google.com/analytics/devguides/collection/gtagjs/events
答案 9 :(得分:0)
我遇到了同样的问题,看起来跟踪了事件,但GA仪表板不允许浏览它们。这是我解释“事件访问次数:1071”的唯一方法,但GA仪表板显示的是“总事件:0”。
UPD :使用GA Chrome调试,发现了问题;第一种方法不起作用(发送没有附加任何数据的事件),但第二种方法没问题。
答案 10 :(得分:0)
我正在使用 Vue.js,似乎我每次都必须创建 ga,即使它已经在窗口中创建:
ga('create', yourGtagId, 'auto');
ga('send', {});
答案 11 :(得分:0)
除了事件(实时和报告)外,我都看到了其他所有内容。我的步骤包括:
如果遇到此问题,请尝试暂停一些标签。还将事件代码连接到某个目标。
答案 12 :(得分:0)
onclick ga()函数不适用于我,我还在<head>
部分添加了'analytics.js'-
<a mat-list-item routerLink='/dashboard' onclick="ga('send', 'event', 'Dashboard', 'Click', 'demoClick, 30);">
<mat-icon color="accent">home</mat-icon>
<span class="side-item">Dashboard</span>
</a>
gtag()函数对我来说很好用,只有<head>
部分中添加的'gtag.js',不需要'analytics.js'或可以将其删除-
<a mat-list-item routerLink='/dashboard' id="sideNavDashboard" onclick="gtag('event', 'Click', {'event_category':'Dashboard', 'event_label':'demoClick', 'value':'30'});">
<mat-icon color="accent">home</mat-icon>
<span class="side-item">Dashboard</span>
</a>
结果(Google Analytics(分析)输出)-
答案 13 :(得分:0)
如果有人试图向Google Analytics(分析)发送事件,并且想知道为什么send
函数在没有任何明确提示的情况下什么也不做,我建议使用其库的调试版本。它将在浏览器控制台中记录一些有用的提示。
与其从https://www.google-analytics.com/analytics.js获取脚本,不如从https://www.google-analytics.com/analytics_debug.js获取脚本。我从他们的documentation中发现了这一点。
答案 14 :(得分:0)
我开始工作 - 我的例子是使用新的Universal Analytics。
<script type="text/javascript">
function sliderOnChange() {
var period = window.convertDays(($("#PeriodSlider").slider("value")));
var amount_of_credit = $("#AmountOfCreditSlider").slider("value");
var gaEventInput = "£" + amount_of_credit + " for " + period;
ga('send', 'event', 'slider', 'sliding', gaEventInput);
}
</script>
答案 15 :(得分:0)
您还应该考虑在ga脚本能够执行'send'方法之前触发提交事件后页面可能会重新加载。为避免这种情况,您可以使用'hitCallback'机制,即阻止提交,调用ga send-method并在回调中提交表单数据。
答案 16 :(得分:-2)
答案 17 :(得分:-2)
我解决问题的唯一方法是回滚到之前版本的Google Analytics(非测试版):
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-39570713-2']);
_gaq.push(['_setDomainName', 'optimino.com']);
_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>
答案 18 :(得分:-4)
您还可以使用我为新的Universal Analytics编写的jquery插件: https://github.com/pascalvgemert/jquery-analytics-event-tracking