2

我正在使用 mixpanel 的 javascript api 使用如下代码:

$(function() {
mixpanel.track_links("a[href~='/posts/more']", "Show more posts.",
      { "topic_id": "<%= @topic.id.to_guid %>" });
});

它似乎不起作用。我尝试了没有单引号的变体,但无济于事。

$(function() {
    mixpanel.track_links("a[href~=/posts/more]", "Show more posts.",
          { "topic_id": "<%= @topic.id.to_guid %>" });
});

上面的代码有问题吗?

以下链接在页面上:

<a href="/posts/more?i=20&id=0a5cb302-859e-11e1-8851-24c603d12b60&type=Topic" data-remote="true">Show More...</a>

当我单击它时,不会触发任何事件。

4

3 回答 3

5

我认为您可能拥有的原因是a[href~=/posts/more]mixpanel 轻量级选择器引擎不支持更丰富的选择器。

通过一些快速测试,我认为只有类、id 和元素有效。

我已经给他们发了电子邮件,例如,我真的需要将 jQuery 对象作为选择器传递的能力,但到目前为止这根本不可能。(显然曾经有支持,也许会回来)。

如果您在临时修复后添加一个类,然后将其传递给 track_links 函数,但我知道,这远非理想。

于 2012-10-16T21:53:53.750 回答
2

Matt Vagni 是正确的,Mixpanel JS 库包含它自己的基本 CSS 选择器引擎的实现,这是极其有限的。

您可能无法进行属性选择,或者至少不能进行子字符串匹配属性选择,而且我通过调试自己的问题知道子选择器和类(例如“p a.foo”)不起作用。

更好的方法是使用 jQuery(或页面上已有的任何内容,Rails 将为您提供 jqlite)来监视您感兴趣的点击并手动跟踪 Mixpanel 事件。

$('body').on('click', 'a[href~=/posts/more]', function() { 
    mixpanel.track("Show more posts.", { "topic_id": "<%= @topic.id.to_guid %>" });
});
于 2014-11-09T07:28:36.477 回答
0

Mixpanel(和 Google Analytics)使用 AJAX 调用将事件发送到他们的服务器,您不能在 AJAX 调用正在进行时重定向页面,否则它将被取消。信息根本不会到达他们的服务器,并且不会跟踪事件。

Mixpanel 建议您在重定向之前添加一个小超时,以便可以完成 AJAX 调用。

我找到了一种解决方法,它使用 cookie 而不添加超时,但它不会实时工作。您可以在以下链接http://tech.matchfwd.com/tag/mixpanel/中查看。

更新:我刚刚在 Mixpanel 官方文档中发现该方法track_links会为您执行此操作。它将在执行重定向之前等待 300 毫秒。

https://mixpanel.com/docs/integration-libraries/javascript-full-api#track_links

于 2012-06-18T22:39:37.993 回答