我正在使用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>
当我点击它时,不会触发任何事件。
答案 0 :(得分:5)
我认为您可能遇到的原因是mixpanel轻量级选择器引擎不支持更丰富的选择器,例如a[href~=/posts/more]
。
从一些快速测试中我认为只有类,id和元素可以工作。
我已经通过电子邮件向他们发送过关于此的信息,例如我真的需要能够将jQuery对象作为选择器传递,但是现在根本不可能。 (以前显然有支持,也许它会回来)。
如果您在临时修复之后添加一个类,然后将其传递给track_links函数,但我知道,这远非理想。
答案 1 :(得分:2)
Matt Vagni是正确的,Mixpanel JS库包含了自己的基本CSS选择器引擎的实现,这个引擎非常有限。
您可能无法进行属性选择,或者至少不能进行子串匹配属性选择,而且我从调试自己的问题中知道了子选择器和类(例如&#34; p a.foo&#34;)不起作用。
更好的方法是使用jQuery(或者您已经在页面上拥有的任何内容,Rails将为您提供jqlite)来监视您感兴趣的点击并手动跟踪Mixpanel事件。 / p>
$('body').on('click', 'a[href~=/posts/more]', function() {
mixpanel.track("Show more posts.", { "topic_id": "<%= @topic.id.to_guid %>" });
});
答案 2 :(得分: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