如何在用户单击链接时记录MixPanel事件?

时间:2011-12-28 14:27:24

标签: javascript jquery mixpanel

当用户点击某种类型的链接时,我正在尝试在MixPanel中记录一个事件。我正在使用JQuery进行不显眼的操作,据我所知,我需要添加一个回调函数,以便在记录事件后将用户带到URL。

这是我正在使用的代码:

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

不幸的是,这既没有将用户带到页面也没有记录事件,但我发现Chrome中的Javascript控制台没有错误。

任何想法可能是什么问题?

更新:还根据评论中的建议尝试了此代码:

<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 个答案:

答案 0 :(得分:11)

Mixpanel最近添加了一个方法mixpanel.track_links来完成这项工作。

答案 1 :(得分:3)

mpq.track函数的第三个参数是回调。一旦跟踪完成,该代码就会被执行,并且是将用户发送到另一页的可靠方式。

$("#more-posts").on("click", function(event) {
        event.preventDefault();
        mpq.track("More Posts", null, function() {
            go_to_link($("#more-posts").attr("href"))
        });
});

答案 2 :(得分:2)

我相信这是MixPanel支持的候选人:support@mixpanel.com。该错误不在于您的jQuery代码。这是一个working jsFiddle,演示了基本功能。

正如我所提到的,我在Kissmetrics的_kmq.push中看到了类似的问题。他们的JS可能没有时间注册该事件。如果您尝试更长的超时,它可能会起作用,但这是糟糕的用户体验

如果/当您联系MixPanel时,请在此处更新。

答案 3 :(得分:1)

不要使用setTimeout,而应考虑使用mpq.track的回调参数。

或者,跟踪链接所在位置的页面加载。

答案 4 :(得分:0)

最简单的方法是使用mixpanel.track中的函数回调函数,该函数在成功记录事件后触发。

代码看起来像这样。

mixpanel.track("Great Success!", {}, function(){
  window.location.href = "www.whatever.com";
});