Как мне зарегистрировать событие MixPanel, когда пользователь нажимает на ссылку? - PullRequest
7 голосов
/ 28 декабря 2011

Я пытаюсь записать событие в MixPanel, когда пользователи нажимают на ссылку определенного типа. Я использую JQuery, чтобы сделать это незаметно, и, насколько я понимаю, мне нужно добавить функцию обратного вызова, чтобы перевести пользователя на URL после того, как событие было зарегистрировано.

Это код, который я использую:

<script type="text/javascript">
    $("#more-posts").click(function() {
        event.preventDefault();
            mpq.track("More Posts", function(){
                window.location = $(this).attr("href");
            });
    });
</script> 

К сожалению, это не переводит пользователя на страницу и не регистрирует событие, но я не вижу ошибок в консоли Javascript в Chrome.

Есть идеи, в чем может быть проблема?

Обновление: также пробовал этот код на основе предложений в комментариях:

<script type="text/javascript">
    function go_to_link(link) {
        window.location = link;
    } 
    $("#more-posts").on("click", function(event) {
            event.preventDefault();
            mpq.track("More Posts");
            setTimeout("go_to_link($("#more-posts").attr("href"))", 2000);
    });

</script> 

Теперь он перенаправляет на правильную ссылку, но все равно не регистрирует событие.

Ответы [ 5 ]

11 голосов
/ 05 апреля 2012

Mixpanel недавно добавил метод mixpanel.track_links , который выполняет эту работу.

3 голосов
/ 12 января 2012

Третий аргумент функции mpq.track - это обратный вызов.Этот код выполняется после завершения отслеживания и станет надежным способом отправки пользователя на другую страницу.

$("#more-posts").on("click", function(event) {
        event.preventDefault();
        mpq.track("More Posts", null, function() {
            go_to_link($("#more-posts").attr("href"))
        });
});
2 голосов
/ 28 декабря 2011

Я считаю, что это кандидат на поддержку MixPanel: support@mixpanel.com. Эта ошибка не связана с вашим кодом jQuery. Вот рабочий jsFiddle , который демонстрирует основные функции.

Как я уже говорил, я видел похожие проблемы с _kmq.push с Kissmetrics. Их JS просто может не успеть зарегистрировать событие. Если вы попытаетесь увеличить время ожидания, это может сработать, но это плохой UX .

Обновите здесь, если / когда вы обращаетесь к MixPanel.

1 голос
/ 30 декабря 2011

Вместо использования setTimeout, рассмотрите возможность использования параметра обратного вызова mpq.track .

В качестве альтернативы, отслеживайте загрузку страницы в том месте, куда бы пошла ссылка.

0 голосов
/ 05 июля 2013

Самый простой способ - использовать функцию обратного вызова в mixpanel.track, которая срабатывает после успешной регистрации события.

Код будет выглядеть следующим образом.

...