6

我有以下代码块来跟踪按钮的点击,然后在 mixpanel 中记录分析。

<script type="text/javascript">
$('.buy').click(function() {
   var myPart = $('#part-name').text();
   var myDistributor = $(this).closest('tr').children('.distributor').text();
   mixpanel.track("Buy Part Link", {"PartName": myPart, "Distributor": myDistributor});
});
</script>

就其本身而言,MixPanel 中不会跟踪活动。但是,当我alert ('added');在 mixpanel 跟踪代码下方添加时,它突然就完美运行了。

为什么?

更新:由于有人问,警报被放置在mixpanel.track命令下方。

4

1 回答 1

12

我将猜测并说可能是因为您正在使用a标签并且页面在脚本可以完成工作之前刷新。

解决方案是event.preventDefault在您的函数中使用,如下所示:

$('.buy').click(function(event) {
    event.preventDefault();
    //the rest of your code
});

默认情况下,a标签通常会导航到新页面(基于href属性)。如果href设置为 no,那么它通常会重新加载当前页面。这是大多数不了解该preventDefault功能的人的常见忽视。但是添加此行会阻止链接在任何地方导航。

正如@Esailija 所说,如果您的 click 函数中的所有代码同步运行,那么它会在页面导航之前完成,这表明它的一部分(最像.track调用)正在异步运行 - 可能使用计时器或通过例如,ajax 调用。

通常,当您发现警报会修复代码时,很可能是因为某些事情没有足够的时间来完成。所以总是寻找可以结束脚本的东西,这很可能(在这种情况下)是页面重新加载/刷新。

如果这不是问题,那么我们可能需要查看您的一些 HTML 以进一步提供帮助。


由于您的评论,您仍然想导航,我做了一个非常快速的谷歌搜索,文档告诉您如何处理链接。查看此页面并向下滚动到该mixpanel.track_links功能。

于 2013-03-14T18:00:29.797 回答