【问题标题】:How do I log a MixPanel event when a user clicks a link?当用户单击链接时,如何记录 MixPanel 事件?
【发布时间】:2015-05-26 18:44:27
【问题描述】:

当用户单击某种类型的链接时,我试图在 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 控制台中没有看到任何错误。

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

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

<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> 

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

【问题讨论】:

  • event 来自哪里?应该是点击回调的参数。
  • 我不这么认为。它的存在是为了防止 click 事件的默认行为,以便以下代码有机会执行。如果我做出您建议的更改,单击只会将用户带到 URL 而不记录事件。它还给出了“未捕获的引用错误”。
  • chrome有什么错误?
  • 您使用的是什么版本的 jQuery?你真的应该使用.on('click', function(event) {...}
  • 这个问题可能是我在 KissMetrics 遇到的类似问题。他们的 JavaScript 代码根本没有时间监听事件。尝试在重定向之前执行setTimeout 并查看它是否正确记录了事件。如果是这样,那么这就是您的问题,您可能希望在他们到达新位置后记录点击事件。

标签: javascript jquery mixpanel


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 那么有可能回调永远不会被调用,你的网站就会被破坏。
    • 没错,回调可能不会被执行。一种解决方法是使用一些承诺和延迟代码,如果回调从未运行(可能发生
    【解决方案3】:

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

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

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

    【讨论】:

    • 感谢 Josh,我已向 MixPanel 支持部门发送了一封电子邮件 - 希望他们能对此有所了解。
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

      代码如下所示。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-31
        • 2011-08-07
        相关资源
        最近更新 更多