2016-07-04 17 views
5

Rails uygulamasında yeni bir oturumda Mixpanel'e bir izleme olayı tetikleyen bir JS kodum var.Raylar: tutarsız ateşleme izleme oturumları için Javascript

Teorik olarak, herhangi başka bir olay tetiklenmeden önce, önce "Yeni Oturum" etkinliğini görmeliyim. Ancak bazı ziyaretlerde, "Yeni Oturum" etkinliğini göremiyorum. Bu, bazı durumlarda işten çıkarılmadığı anlamına geliyor.

Aşağıdaki kodun nesi yanlış?

var ready; 
ready = function() { 
    var currentLocation = window.location.hostname; 
    var lastLocation = document.referrer; 
    if (lastLocation.indexOf(currentLocation) > -1) { 
    } else { 
    mixpanel.track("New Session", {}); 
    } 
    mixpanel.track("Page View", {}); 
}; 

$(document).ready(ready); 
$(document).on('page:load', ready); 

için Raylar 5:

$(function(){ 
    var currentLocation = window.location.hostname; 
    var lastLocation = document.referrer; 
    if (lastLocation.indexOf(currentLocation) > -1) { 
    } else { 
    mixpanel.track("New Session", {}); 
    } 
    mixpanel.track("Page View", {}); 
}); 
+0

Projenizde turbolinks kullanıyor musunuz? – neydroid

+1

da yeniden yönlendirir. Oturum açtıklarında birinin kilitli bir sayfayı ziyaret ettiğini düşünün. Sunucu onları giriş sayfasına yönlendirir. yönlendiren etki alanınıza ayarlanacak ve olay –

+0

@ BlairAnderson'a işlenmezdi aslında bu sorunun bir sorunu olduğunu düşünüyorum. Bazı http https yönlendirmeleri var. Bir cevap bırakmak ister misin? –

cevap

4

Eğer Turbolinks kullanıyorsanız hazır olayı ilk sayfa yüklemesinden sonra ateş, bu nedenle özel bağlamak gerekiyor değil gibi page:load gibi olayları turbolinks Olay adı, turbolinks:load

+0

Cevabınız için teşekkürler ama zaten devre dışı bırakılmış turbolinks –

1

olarak değiştirildi. Sorunu gerçekten çözmeden önce sorunu nasıl yeniden üreteceğinizi öğrenmeniz gerekir.

Kodun çalıştırıldığını biliyoruz, izleme ve veri ekleme için if deyimini kullanmanızı öneririz.

$(function(){ 
    var currentLocation = window.location.hostname; 
    var lastLocation = document.referrer; 
    if (lastLocation.indexOf(currentLocation) > -1) { 
    // internal links 
    mixpanel.track("Page View", {}); 
    } else { 
    // external or non-existant link 
    // bookmarks and email links won't have referrers 
    mixpanel.track("New Session", {referrer: document.referrer}); 
    mixpanel.track("Page View", {}); 
    } 
}) 
+0

Bu iyi bir adım. Teşekkürler, bunu deneyecek ve rapor edeceksiniz. –