当用户点击链接时,我如何记录MixPanel事件?

7
我想在用户点击某种类型的链接时,在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> 

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


1
event是从哪里来的?它应该作为点击回调函数的一个参数。 - Robin
你使用的是哪个版本的jQuery?你应该真正使用.on('click', function(event) {...} - Josh Smith
问题可能与我在KissMetrics遇到的类似问题有关。他们的JavaScript代码根本没有时间监听事件。在重定向之前尝试使用setTimeout,看看是否正确记录了事件。如果是这样,那么这就是您的问题,并且您可能希望在他们到达新位置后记录单击事件。 - Josh Smith
@cutwithflourish 你有试过我在评论中提出的建议吗? - Josh Smith
嗨,Josh,是的,我尝试过它们,似乎没有解决问题。我将更新答案,并提供我目前正在尝试的代码,它现在可以将用户带到链接,但仍然无法记录事件。 - cutwithflourish
显示剩余4条评论
5个回答

11

3

mpq.track函数的第三个参数是一个回调函数。这段代码在跟踪完成后执行,是将用户发送到其他页面的可靠方式。

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

1
那么就有可能导致回调函数从未被调用,进而导致您的网站出现故障。 - Julien Grenier
没错,回调可能不会被执行。解决这个问题的方法是使用一些 promise 和 deferred 代码,如果回调从未运行(可能发生<1% 的时间),则可以回退到运行定时方法。 - Thomas Hunter II

2
我认为这个问题可以向MixPanel支持团队发送电子邮件:support@mixpanel.com。这个错误不在于你的jQuery代码。这里有一个演示基本功能的有效的jsFiddle
正如我之前提到的,我曾经在使用Kissmetrics的_kmq.push时遇到类似的问题。他们的JS可能没有时间去注册事件。如果你尝试延长超时时间,它可能会起作用,但是这样做会导致糟糕的用户体验。
如果你联系了MixPanel,请在这里更新。

谢谢Josh,我已经给MixPanel支持团队发送了一封电子邮件 - 希望他们能够解决这个问题。 - cutwithflourish

1

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

或者,在链接应该跳转到的位置跟踪页面加载。


0

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

代码如下所示。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接