在我登录页面的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');
}
});
答案 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 永远不会发生(这也是可能的)。
将跟踪代码绑定到默认重定向的元素上时,请不要忘记调用 event.preventDefault()(例如< a>,< button> 。 ..)
答案 1 :(得分:-1)
ga()
将分析请求排入队列,主要是等待完整的分析库下载。 (https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference)
如果您在加载资源之前重定向,则不会调用Google Analytics。