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

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

这是我正在使用的代码:

 $("#more-posts").click(function() { event.preventDefault(); mpq.track("More Posts", function(){ window.location = $(this).attr("href"); }); });  

不幸的是,这既不会将用户带到页面也不会记录事件,但我发现Chrome中的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); });  

它现在重定向到正确的链接,但仍然不记录事件。

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

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

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

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

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

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

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

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

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

代码看起来像这样。

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