mixpanel track_links не отслеживаются должным образом

Я использую следующий код, используя javascript API mixpanel:

$(function() {
mixpanel.track_links("a[href~='/posts/more']", "Show more posts.",
      { "topic_id": "<%= @topic.id.to_guid %>" });
});

Кажется, это не работает. Я пробовал вариант без одинарных кавычек, но безрезультатно.

$(function() {
    mixpanel.track_links("a[href~=/posts/more]", "Show more posts.",
          { "topic_id": "<%= @topic.id.to_guid %>" });
});

Что-то не так с приведенным выше кодом?

На странице есть следующая ссылка:

<a href="/posts/more?i=20&id=0a5cb302-859e-11e1-8851-24c603d12b60&type=Topic" data-remote="true">Show More...</a>

Когда я нажимаю на него, событие не запускается.


person deruse    schedule 18.04.2012    source источник
comment
Ваш селектор правильный? Вы получаете результат, когда просто пробуете $("a[href~=/posts/more]")   -  person sazh    schedule 24.05.2012


Ответы (3)


Я думаю, причина, по которой вы можете столкнуться, заключается в том, что более богатые селекторы, такие как a[href~=/posts/more], не поддерживаются облегченным движком селекторов mixpanel.

Из некоторых быстрых тестов я думаю, что работают только классы, идентификаторы и элементы.

Я отправил им электронное письмо по этому поводу, мне, например, действительно нужна возможность передать объект jQuery в качестве селектора, но на данный момент это просто невозможно. (Раньше была поддержка видимо, может вернется).

Если вам нужно временное исправление, добавьте класс, а затем передайте его функции track_links, но я знаю, что это далеко не идеально.

person Matt Vagni    schedule 16.10.2012

Мэтт Вагни прав, библиотека Mixpanel JS включает в себя собственную реализацию базового механизма выбора CSS, который крайне ограничен.

Вы, вероятно, не можете сделать выбор атрибута или, по крайней мере, не выбрать подстроку, совпадающую с выбором атрибута, и я знаю из отладки своих собственных проблем, что дочерние селекторы плюс классы (например, "p a.foo") не работают.

Лучшим подходом будет использование jQuery (или того, что у вас уже есть на странице, Rails сделает jqlite доступным для вас) для отслеживания интересующих вас кликов и отслеживания событий Mixpanel вручную.

$('body').on('click', 'a[href~=/posts/more]', function() { 
    mixpanel.track("Show more posts.", { "topic_id": "<%= @topic.id.to_guid %>" });
});
person Will Madden    schedule 09.11.2014

Mixpanel (и Google Analytics) использует вызовы AJAX для отправки событий на свои серверы, вы не можете просто перенаправить страницу во время выполнения вызова AJAX, иначе он будет отменен. Информация просто не доходит до их серверов, и событие не отслеживается.

Mixpanel рекомендует добавить небольшой тайм-аут перед перенаправлением, чтобы можно было завершить вызов AJAX.

Я нашел обходной путь, который использует файлы cookie без добавления тайм-аута, однако он не будет работать в режиме реального времени. Вы можете проверить это по следующей ссылке http://tech.matchfwd.com/tag/mixpanel/.

Обновление: я только что нашел в официальной документации Mixpanel, что метод track_links сделает это за вас. Он будет ждать 300 мс, прежде чем выполнить перенаправление.

https://mixpanel.com/docs/integration-libraries/javascript-full-api#track_links

person Juanda    schedule 18.06.2012