当用户点击某种类型的链接时,我正在尝试在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>
现在重定向到正确的链接,但仍然不记录事件。
答案 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";
});