ga()需要多长时间才能完成?

时间:2017-01-12 15:38:02

标签: javascript jquery google-analytics

在我登录页面的ajax调用中,如果它返回一个名为is_first_login = 1的参数,那么我需要调用ga()来发送GA事件。

在此之后,页面会立即重定向到主仪表板页面。 但不确定为什么,ga()有时不会被解雇。

GA事件解雇需要多长时间才能完成?

  // Make ajax call for login.
  fn._post('user.post_login', {
    username: username,
    pwd: pwd,
    redirect_to: redirect_to,
  }, function (json) {

    if ( !json.error && json.is_first_login ) {

      if (typeof ga !== 'undefined') {
        var event_category = 'Subscribe - First Login',
            event_action = 'First Login',
            event_label = 'Partner';

        ga('send', 'event', event_category, event_action, event_label);
        ga('newTracker.send', 'event', event_category, event_action, event_label);
      }
    }

    if (json.redirect) {
      fn._redirect(json.redirect);
      return;
    }

    $('.msg').remove();
    if (json.error) {
      fn._inlineMsg(jUsername.parent(), json.msg);
      jUsername.focus();
      jLoginBtn.parent().removeClass('loading');
    }
  });

2 个答案:

答案 0 :(得分:2)

您永远无法判断跟踪请求将在客户端计算机上执行多长时间。我的跟踪请求通常需要大约25毫秒(很少花费更多 - 比如960毫秒)。

您可以自己测试一下。只需从浏览器控制台运行以下命令:

var start = (new Date()).getTime();
ga('send', 'event', 'event_category', 'event_action', 'event_label', {
    hitCallback: function() {
      console.log("Tracking took " + ((new Date()).getTime() - start));
    }
});

然而,你得到的时间只是提供信息,你不能依赖它。在其他一些客户端的计算机上可能会有不同的响应时间。

因此,您可能希望将重定向代码放在回调函数中。

setTimeout(function(){
  //redirect here
}, 2000);

ga('send', 'event', event_category, event_action, event_label, {
  hitCallback: function() {
    //redirect here
  }
});

使用 setTimeout 以防万一, hitCallback 永远不会发生(这也是可能的)。

详细了解https://developers.google.com/analytics/devguides/collection/analyticsjs/sending-hits#knowing_when_the_hit_has_been_sent

将跟踪代码绑定到默认重定向的元素上时,请不要忘记调用 event.preventDefault()(例如< a>,< button> 。 ..)

答案 1 :(得分:-1)

ga()将分析请求排入队列,主要是等待完整的分析库下载。 (https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference

如果您在加载资源之前重定向,则不会调用Google Analytics。