2012-04-18 75 views
2

我使用如下使用mixpanel的JavaScript API代碼:mixpanel track_links追蹤不正確

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

你的選擇正確嗎?當你嘗試'$(「a [href〜=/posts/more]」)''時,你會得到一個結果嗎? – diaho 2012-05-23 22:17:39

回答

0

Mixpanel(和Google Analytics)使用AJAX調用將事件發送到他們的服務器,當AJAX調用正在進行或者它將被取消時,您不能只是重定向頁面。這些信息根本不會到達他們的服務器,並且事件不會被跟蹤。

Mixpanel建議您在重定向之前添加一個小超時,以便完成AJAX調用。

我發現了一個解決方法,它使用cookies而不添加超時,但它不會實時工作。您可以在以下鏈接http://tech.matchfwd.com/tag/mixpanel/中查看它。

更新:我剛剛在Mixpanel官方文檔中發現方法track_links將爲您做到這一點。它會在執行重定向之前等待300毫秒。

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

5

我想你可能會具有的原因是更豐富的選擇,例如a[href~=/posts/more]不被mixpanel輕量級選擇器引擎支持。

從一些快速測試,我認爲只有類,身份證和元素的工作。

我已經通過電子郵件向他們發送了關於此事的信息,例如我真的需要能夠將jQuery對象作爲選擇器傳遞,但現在根本不可能。 (顯然曾經有支持,也許它會回來)。

如果您是在臨時修復後添加一個類,然後將其傳遞給track_links函數,但我知道,這遠非理想。

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 %>" }); 
});