Событие отслеживания Mixpanel периодически завершается сбоем

У меня есть несколько разных событий mixpanel, отправляемых с моей страницы. Пара из них отправляется при отправке формы (две разные формы, каждая в своем модальном режиме). Из всех событий одно из событий отправки формы периодически терпит неудачу, и я не могу понять, почему. Оба представления формы имеют jQuery, например:

$(document).on 'submit', '#myForm', (e) ->
  mixpanel.track('my form submitted')

Одна форма надежна, другая нет (отказывает примерно в 3/4 случаев). Я изменил ненадежный на:

$(document).on 'submit', '#myForm', (e) ->
  window.mixpanel.track('my form submitted')

и это, кажется, работает большую часть времени, но все же не всегда. Представляю ли я разницу, или изменение mixpanel.track на window.mixpanel.track могло что-то изменить. И что, о, что мне здесь не хватает?


person ivan    schedule 18.06.2014    source источник
comment
window.mixpanel и mixpanel не должны отличаться, если только вы где-то не переопределили mixpanel (чего делать не следует!). Проверьте журналы вашего браузера, чтобы увидеть, что происходит, возможно.   -  person Evan Hahn    schedule 18.06.2014
comment
@EvanHahn Я еще немного поиграл с этим, и действительно, window.mixpanel ничем не отличается от mixpanel. В конце концов, я пошел с другой стратегией, но мне все еще жаль, что я не смог добраться до сути этой.   -  person ivan    schedule 19.06.2014


Ответы (1)


Я думаю, что это вызвано асинхронным поведением Mixpanels. Когда вы вызываете submit, инструкция track() начинает выполняться неблокирующим способом, что позволяет отправить форму, даже если вызов track() API Mixpanel все еще продолжается. Если это произойдет, ваша форма будет отправлена ​​до завершения вызова track().

То же самое происходит при переходе по ссылкам и объясняется в этом сообщение. Именно поэтому Mixpanel предлагает track_links() и < методы href="https://mixpanel.com/help/reference/javascript-full-api-reference#mixpanel.track_forms" rel="nofollow">track_forms(). Они решают проблему следующим образом и могут быть полезны в вашем случае.

Эта функция будет ждать ответа от серверов mixpanel до 300 мс, если они не ответили к этому времени, она перейдет по ссылке, не гарантируя, что ваше событие было отслежено. Чтобы настроить этот тайм-аут, см. документацию mixpanel.set_config ниже.

person phillchill    schedule 25.06.2014