2017-01-12 103 views
0

在我登录页面的ajax调用中,如果它返回一个名为is_first_login = 1的参数,那么我需要调用ga()来发送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

舒尔。它必须ping谷歌服务器...多数民众赞成在它是如何工作的... –

+1

奇怪的问题。即使在量子计算和高速网络中,也需要一定的时间才能完成大于零。我想你实际上想知道浏览器是否在页面卸载时中止了待处理的AJAX请求... –

+0

@Alvaro刚刚改变了。感谢您的好教导,那就是量子计算网络。我不知道:D –

回答

2

您永远无法知道跟踪请求将在客户端的计算机上执行多长时间。我的跟踪请求通常需要25ms(很少花费更多 - 例如960ms)。

你可以自己测试一下。从您的浏览器控制台运行以下内容:

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()结合跟踪代码到元素,它在默认情况下重定向(如<一个>,<按钮> ...)

-1

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

如果您在该资源加载之前重定向,那么将无法调用Google Analytics(分析)。

+0

analytics.js在此事件之前已经完全加载被解雇。我想知道完成ga('send')呼叫需要多长时间。 –

+1

它取决于服务器的响应时间,它可能会有所不同。您应该使用设置的超时函数编写回调函数。 1秒应该有足够的时间让ga发送回叫。超时是让你的scipt不依赖于ga。如果ga没有响应,它会继续,以防万一。 – Medda86

相关问题