【问题标题】:Ensuring that google analytics event sent before going to the next page确保在转到下一页之前发送谷歌分析事件
【发布时间】:2018-03-07 01:02:29
【问题描述】:

在非 SinglePageApp 中,当您单击指向另一个页面的锚链接时,javascript 将取消并加载新页面。

当我尝试对附加到这些锚标记的谷歌分析进行异步调用时,这是一个问题。

例如,如果我有一个继续链接,并且我希望在单击它时触发 ga 事件,如果我天真地添加事件,它将排队以异步加载,但有时不会被调用,因为浏览器会取消 javascript并在处理 ga 'continue clicked' 事件之前转到下一页。

我注意到 GA 有一个名为“hitCallback”的属性,我尝试使用它,但似乎我仍然没有处理继续事件。我这样做是因为试图在这里遵循 GA 的指导方针:https://developers.google.com/analytics/devguides/collection/analyticsjs/sending-hits#handling_timeouts

$('a.js-ga-track-event').click(function(e) { // jquery attaching to a element
    e.preventDefault();
    var href = this.href;
    var linkClicked = false;

    var clickLink = function() {
        if (href && !linkClicked) {
            linkClicked = true;
            window.location.href = href;
        }
    };

    // As a backup, will submit the form if GA does not succeed within 0.5 seconds
    setTimeout(clickLink, 500);

    var name = 'continue clicked';
    var label = '';
    ga('send', {
        'hitType': 'event',
        'eventCategory': 'EXAMPLE CATEGORY',
        'eventAction': 'continue clicked',
        'eventLabel': label,
        'hitCallback': clickLink
    });
});

该链接肯定没有捕获所有事件命中。我做错了吗?

【问题讨论】:

  • 另一种措施是将“传输”字段设置为“信标”,因为即使在页面卸载时也会发送数据(现在浏览器支持应该很好,并且 ga 回退到不支持 Navigator.sendBeacon(). 时的默认方法)。

标签: javascript google-analytics


【解决方案1】:

hitCallBack 确实是您想要使用的。整体代码逻辑看起来不错,但是,我看到了:

  • GA 函数名称为大写(GA 而不是应为的ga
  • send 调用的语法与doc example 不同

相反,你为什么不试试这个:

ga('send', 'event', 'EXAMPLE CATEGORY', 'continue clicked', label, {
    hitCallback: clickLink
});

【讨论】:

  • 嘿@Max 感谢您的关注。我没有添加它,但我实际上在我的真实代码中将它导入为大写。将在示例中修复它。同样在文档中,看起来他们有两种方法。如果您向上滚动,ga('send', { hitType: 'event', eventCategory: 'Video', eventAction: 'play', eventLabel: 'cats.mp4' }); 就在那里。但是,也许我会尝试以其他方式这样做,看看是否会有所作为
【解决方案2】:

将传输字段设置为“信标”。就这么简单。

【讨论】:

  • 遗憾的是我必须支持 IE 11 并且不支持信标:( caniuse.com/#feat=beacon
  • @ThinkBonobo 在卸载前使用断点并等待 google 服务器返回 200
猜你喜欢
  • 1970-01-01
  • 2021-04-24
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多