61

我有一个网站,我正在使用新的 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');
    });

Analytics 的“事件”部分中没有显示任何内容。我不断点击按钮,即使来自不同的计算机,只是为了确保它不排除我的 IP 地址。因为谷歌提供的分析文档没有提供很多解释,所以我在这里不知所措。

4

20 回答 20

192

如果您使用的是Google 跟踪代码管理器,并且还想通过代码触发一些事件,ga('send'...)这似乎还不够。您需要首先获取适当的分析对象:

if ("ga" in window) {
    tracker = ga.getAll()[0];
    if (tracker)
        tracker.send("event", "Test", "Test GA");
}

请注意,这假设您只在您的网站上使用了一个 Google Analytics(分析)跟踪代码。如果您碰巧使用多个,则可能需要按名称或索引获取适当的一个。

于 2016-11-23T10:23:18.447 回答
32

新版本的分析具有新的语法。替换下面的行;

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

于 2019-04-29T06:11:56.053 回答
10

出于测试目的,您还可以使用 hitCallback 方法:

ga('send', {
  'hitType': 'event',         
  'eventCategory': 'button', 
  'eventAction': 'click',     
  'eventLabel': 'contact form',
  'hitCallback' : function () {
      alert("Event received");
   }
});

更新:缺少逗号。

于 2013-04-18T09:04:10.097 回答
8

对于此刻的 GA... 在 SPA 中发送新页面对我来说最终看起来像这样:

if (window.ga){
    window.ga.getAll()[0].set('page', location);
    window.ga.getAll()[0].send('pageview')
}

这准确地显示了 GA 报告中想要的内容,例如点击了新页面并且标题和所有内容都是正确的。

于 2020-01-30T11:22:33.183 回答
4

我有同样的问题。我必须创建一个新属性并选择“通用分析”而不是“经典分析”(它被标记为“测试版”)。现在事件被正确捕获。

于 2013-07-19T00:20:58.360 回答
4

就我而言,问题是 uBlock Origin 阻止了分析脚本的加载。

于 2016-05-18T18:17:27.403 回答
3

我遇到了同样的问题,我想我已经找到了解决方案,但它确实让我对 Universal Analytics 产生了不好的印象。

我必须做的是明确使用同步分析 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),这可能解释了为什么更多开发人员没有注意到这个问题。

于 2014-04-09T18:59:22.107 回答
2

今天我需要第一次设置分析,我发现自己遇到了同样的麻烦。

我发现处理多个跟踪器以避免 的最糟糕的方法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

于 2017-08-18T01:53:03.310 回答
2

如果有人试图向 Google Analytics 发送事件并想知道为什么send函数在没有任何明确提示的情况下什么都不做,我建议使用他们库的调试版本。它将在浏览器控制台中记录一些有用的提示。

与其从 https://www.google-analytics.com/analytics.js 获取脚本,不如从https://www.google-analytics.com/analytics_debug.js获取脚本。我从他们的文档中发现了这一点。

于 2020-08-18T20:35:07.577 回答
1

我看不出代码本身有什么问题。您是否尝试过使用替代事件跟踪?

ga('send', {
  'hitType': 'event',          // Required.
  'eventCategory': 'button',   // Required.
  'eventAction': 'click',      // Required.
  'eventLabel': 'contact form'
});

我还建议使用 GA Debug Chrome 插件测试该网站,它可以让您查看是否发送了跟踪信标。

到目前为止,Universal Analytics 的“官方”调试文档仍然缺失,但希望它会尽快添加,因为 ga_debug.js 提供了许多有用的方法来找出 Analytics 实现的问题......

于 2013-04-03T10:48:01.947 回答
0

我有同样的问题,看起来事件被跟踪,但 GA 仪表板不允许浏览它们。这是我可以解释 GA 仪表板向我显示的“访问事件:1071”但“事件总数:0”的唯一方法。

UPD : 用 GA Chrome 调试,发现有问题;第一种方法不起作用(发送没有附加任何数据的事件),但第二种方法可以。

于 2013-04-14T12:19:03.253 回答
0

您还应该考虑到,在 ga 脚本能够执行“发送”方法之前,在触发提交事件之后页面可能会重新加载。为避免这种情况,您可以使用“hitCallback”机制,即阻止提交,调用 ga send-method 并在回调中提交表单数据。

于 2013-09-21T17:44:24.763 回答
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>
  1. 确保 Google Analytics / Google Tag Manager 过滤器不排除来自不同域的任何流量。(也许您正在测试它以使其使用不同的域工作)
  2. 在 ga('create', 'UA-39570713-1', 'site.com') 中重新检查您的 GA id 和域;
  3. 在 Google Analytics (GA) 中创建一个新的配置文件以进行测试,并在您在 GA 中定义的同一域中调试您的 html。
  4. 在 GA 中将日期更改为今天 - 您可能还需要等待一段时间才能在 GA 中显示
于 2013-11-15T10:32:03.007 回答
0

我建议通过 GTM 发送 GTM 事件,window.dataLayer.push({ event: 'EVENT_NAME', ...data })并在 GTM 中创建触发器以触发将事件发送到 Google Analytics 的标签。您将通过 GTM 预览获得最佳调试体验,并且您将确保事件将从 GTM 发送到 GA,因为 GTM 会处理这些。

于 2017-11-27T14:39:42.233 回答
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() 函数对我来说工作正常,只有在部分中添加的“gtag.js” <head>,不需要或可以删除​​“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>

结果(谷歌分析输出) -

在此处输入图像描述

于 2020-10-05T12:54:18.323 回答
0

我看到了除事件(实时和报告)之外的所有内容。我的步骤包括:

  • 打电话给谷歌,他们发现我的谷歌优化的 GTM 标记正在阻止所有事件发送到分析。
  • 从谷歌标签管理器中删除了优化标签,事件开始在分析中弹出。

如果您遇到此问题,请尝试暂停一些标签。还将事件标签连接到某个目标。

于 2020-10-22T14:47:45.593 回答
0

我正在使用 Vue.js,似乎我每次都必须创建 ga,即使它已经在窗口上创建:

ga('create', yourGtagId, 'auto');
ga('send', {});
于 2021-06-15T10:54:39.560 回答
-1

就我而言,它不起作用,因为我直接从文件系统加载了 HTML 文件。

通过网络服务器加载页面就可以了。

对于本地开发,像https://github.com/tj/serve这样的工具做得很好。

于 2015-12-16T00:37:17.617 回答
-2

我解决问题的唯一方法是回滚到以前版本的 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>
于 2013-06-18T20:23:00.770 回答
-4

您还可以使用我为新的 Universal Analytics 编写的 jquery 插件: https ://github.com/pascalvgemert/jquery-analytics-event-tracking

于 2013-10-11T09:13:24.927 回答