【问题标题】:analytics.js event not always sentanalytics.js 事件并不总是发送
【发布时间】:2013-08-28 00:45:27
【问题描述】:

我在我的 ASPX Web 应用程序中实现了 analytics.js(新版本)。 我的综合浏览量工作正常,但事件通常不会发送。

在我的示例中,我尝试按下 3 个不同的按钮,但只有一个按钮触发了事件。 我为每个事件添加了一个警报框,以验证它是否真的被触发了,并且这些都显示出来了。

这是我的js,放在</head>之前

(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-XXXXXXXX-1', {
    'cookieDomain': 'none'
});
ga('send', 'pageview', {
    'page': '/team/main',
    'title': 'Logged in'
});

$(document).ready(function() {
    $(".team_button").on("click", function() {
        ga('send', 'event', 'button', 'click', 'Team select button', {
            'page': '/team/'
        })
    });
    $(".calendar_month_prev").on("click", function() {
        ga('send', 'event', 'button', 'click', 'Calendar: Prev month', {
            'page': '/team/'
        })
    });
    $(".calendar_month_next").on("click", function() {
        ga('send', 'event', 'button', 'click', 'Calendar: Next month', {
            'page': '/team/'
        })
    });
    $(".calendar_day_selected").on("click", function() {
        ga('send', 'event', 'button', 'click', 'Calendar: Same day reload', {
            'page': '/team/'
        })
    });
    $(".calendar_day_active").on("click", function() {
        ga('send', 'event', 'button', 'click', 'Calendar: Select day', {
            'page': '/team/'
        })
    });
});

【问题讨论】:

  • 你能澄清什么不起作用吗?您添加的这个屏幕截图不容易阅读或理解。
  • 正在发送综合浏览量,但每次按下按钮时,也应该发送一个事件。似乎相当随机,正在发送什么事件 - 就像页面重新加载太快一样,但由于它是异步的,我相信这不应该是问题吗?

标签: javascript google-analytics dom-events analytics.js


【解决方案1】:

在加载新页面时,当前页面上的待处理请求将被取消——在本例中为分析跟踪像素请求。 'async' 更多地指的是分析 JavaScript 代码的加载,然后是分析数据的处理。

对于 ga.js,一种常见的方法是停止传播点击事件,发送事件,然后在点击链接之前延迟一小段时间(150 毫秒)。

使用 analytics.js,您可以使用 hitCallback 在发送分析数据后运行代码,而不是延迟。 请参阅 Google Analytics 文档中的 Setting the Hit Callback

【讨论】:

  • 好的,这有点清楚了。我想我可以使用类似var url = $(this).attr("href"); 'hitCallback' : function () { document.location = url; }
  • 他们为什么不将其与有关事件跟踪的一般信息一起列出。为什么将其埋在高级配置中。我仍然没有看到事件发生,至少是实时的,但至少我知道回调正在触发意味着请求完成。我不知道为什么我不能显示事件。旧方法没有失败。
【解决方案2】:

好的,如果其他人有同样的问题,我就是这样解决的:

我创建了一个函数来调用分析跟踪,我将页面延迟了几分之一秒:

function TrackEvent(link, category, action, label, page) {
    try {
        ga("send", "event", category, action, label, { 'page': page });
    } catch (err) { consol.log(err); }

    setTimeout(function () {
        document.location.href = link.href;
    }, 25);
}

然后,我的每个 onClick 绑定都会调用这个函数,如下所示:

$(document).ready(function () {
    $(".calendar_month_prev").on("click",function(){ TrackEvent(this, 'button', 'click', 'Calendar: Prev month', '/team/main'); return false;});
    $(".calendar_month_next").on("click",function(){ TrackEvent(this, 'button', 'click', 'Calendar: Next month', '/team/main'); return false;});
    $(".calendar_day_active").on("click",function(){ TrackEvent(this, 'button', 'click', 'Calendar: Select day', '/team/main'); return false;});
});

如果这是首选的话,可以将其添加到 a href onClick 中:)

【讨论】:

    【解决方案3】:

    我建议在成功注册事件后执行一个虚拟锚点点击:

    a.onclick = function(e){
                var anchor = this;
                _gaq.push(['_trackEvent', 'Category','event','label']);
                _gaq.push(function() {
                    var a = document.createElement('a');
                    a.href = anchor.href;
                    a.target = anchor.target;
                    a.click();
                });
                return false;
            }
    

    由于推送作为队列工作,您的事件请求将永远不会被取消..

    【讨论】:

      【解决方案4】:

      正如 Mike 所指出的,在这种情况下,您应该使用命中回调。此外,您还需要考虑到用户可能会使用 Ghostery 等隐私保护工具屏蔽 Google Analytics,这种情况下点击回调将永远不会执行。因此,您需要非常小心地实施这一点,以便您的网站即使对这些用户也能继续工作。以下文章解释了如何正确执行此操作:

      http://veithen.github.io/2015/01/24/outbound-link-tracking.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-29
        • 2011-08-31
        • 1970-01-01
        • 1970-01-01
        • 2020-02-27
        • 2014-12-28
        • 1970-01-01
        • 2011-02-19
        相关资源
        最近更新 更多