2017-01-12 6 views
0

В моем аякс-вызове страницы входа, если он возвращает параметр с именем 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

Shure. Он должен пинговать серверы google ... Вот как это работает ... –

+1

Странный вопрос. Даже в квантовых вычислениях и высокоскоростных сетях требуется время для завершения, которое больше нуля. Полагаю, вы действительно хотите знать, отменяет ли браузер ожидающие запросы AJAX на разгрузке страницы ... –

+0

@Alvaro Просто изменилось. Благодарим вас за то, что вы преподаете, что это квантовая вычислительная сеть. Я не знал: D –

ответ

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() при связывании код отслеживания на элемент, который делает перенаправление по умолчанию (например, < >, < кнопку > ...)

-1

ga() очередь запроса аналитики, в основном ждать полной аналитической библиотеку для загрузки. (https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference)

Если вы перенаправляете до загрузки этого ресурса, то вызов в google analytics не будет выполнен.

+0

analytics.js уже была полностью загружена перед этим событием увольняется. Я хотел бы знать, сколько времени потребуется для завершения вызова ga ('send'). –

+1

зависит от времени отклика сервера и может отличаться. Вы должны написать функцию обратного вызова с заданной функцией тайм-аута. 1 секунда должно быть достаточно времени для ga для отправки обратного вызова. Тайм-аут должен сделать ваш сеанс не зависящим от ga. Это продолжается, если ga не отвечает, на всякий случай. – Medda86

Смежные вопросы