2013-06-11 9 views
6

mixpanel.track_linksをダイナミックに追加した(ページの読み込み後)問題があります。リンクはjqueryのを使用してページに追加され、一部のユーザーアクションでMixpanel track_linksは動的に追加された要素では機能しません

<div id="link-div"></div> 
<input type="button" id="add-link" /> 
<script type="text/javascript"> 
mixpanel.track_links(".mixpanel-event", "event name", function(ele) { return { "type": $(ele).attr("type")}}); 
</script> 

:一般例えば

は、このページを与えられました。例:

問題は、新しく作成されたリンクのクリックでtrack_linksが発生しないことです。私は誰かが動的に追加されたリンクのために働くtrack_link機能を有効にすることで彼らの経験を共有できることを望んでいます。

+3

Mixpanelサポートチームがtrack_linksが動的に生成されたリンクを使用することはできませんことを確認しました。 track_linksとtrack_formsをリバースエンジニアリングすることで、機能を再構築することをお勧めします。 "Track_linksとtrack_formsはクリックハンドラで、基本的な構造はページの変更を無効にし、トラック要求を送信し、トラック機能のコールバックでページを変更します。また、ページをリロードするタイムアウト(300ms)もありますとにかく、まれなイベントでMixpanelに停電が発生しても、サーバがダウンしてもリンクは引き続き機能します。 –

+1

track_linksをリバースエンジニアリングするとどういう意味ですか? – Bri6ko

答えて

7

私は好奇心が強いので、私は自分のコードをチェックし、彼らが示唆したように前進しました。私はそれをテストし、それは正常に働いた。しかしこれにはjQueryが必要です。

使用例:mixpanel.delegate_links(document.body, 'a', 'clicked link');

// with jQuery and mixpanel 
mixpanel.delegate_links = function (parent, selector, event_name, properties) { 
    properties = properties || {}; 
    parent = parent || document.body; 
    parent = $(parent); 

    parent.on('click', selector, function (event) { 
     var new_tab = event.which === 2 || event.metaKey || event.target.target === '_blank'; 

     properties.url = event.target.href; 

     function callback() { 
      if (new_tab) { 
       return; 
      } 

      window.location = properties.url; 
     } 

     if (!new_tab) { 
      event.preventDefault(); 
      setTimeout(callback, 300); 
     } 

     mixpanel.track(event_name, properties, callback); 
    }); 
}; 
関連する問題