2013-06-11 15 views
6

Dinamik olarak eklenen bağlantılarla (sayfa yüklendikten sonra) mixpanel.track_links kullanarak sorun yaşıyorum. linkler jquery kullanarak sayfa eklenir, bazı kullanıcı eylemi andaMixpanel track_links, dinamik olarak eklenen öğelerle çalışmaz

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

: Genel Örneğin

, bu sayfayı verilmiş. Örneğin:

$('#add-link).click(function() { 
    $('#link-div').html('<a class="mixpanel-event" type="event-type" href="#>Link to track</a>'); 
}) 

sorun yeni oluşturulan bağlantının tıklama track_links tetiklenir olmamasıdır. Birisinin, dinamik olarak eklenen bağlantılar için çalışmak üzere track_link işlevini etkinleştirmedeki deneyimlerini paylaşabileceğini umuyorum.

+3

Mixpanel destek ekibi track_links dinamik olarak oluşturulmuş bağlantıları ile kullanılamaz doğruladı. Tersine mühendislik track_links ve track_forms tarafından işlevselliği yeniden oluşturmanızı öneririz. "Track_links ve track_forms tıklatma işleyicileridir; temel yapısı, sayfa değişikliğini devre dışı bırakmaları, parça isteğini göndermeleri, daha sonra parça işlevinin geri çağrılanındaki sayfayı değiştirmeleridir. Ayrıca sayfayı yeniden yüklemek için bir zaman aşımı (300ms) vardır. Yine de, Mixpanel'in bir kesintisi olduğu nadir durumlarda, sunucularımız kapalı olsa bile bağlantı hala çalışıyor. " –

+1

track_links'in tersine mühendislikle ne demek istiyorsunuz? – Bri6ko

cevap

7

Merak ettim ki kodlarını kontrol ettim ve devam ettim ve önerdikleri gibi yaptım. Test ettim ve işe yaradı. Bu jQuery gerektirir.

Örnek kullanım: 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); 
    }); 
}; 
İlgili konular