2011-12-12 18 views
7

Bu kod ile benim bir projeyi sunan bir web sitesinde İndir düğme tıklama izliyorum:Analytics kullanarak olaylarla bir indirme düğmesi tıklamasını Takip

function trackDownload(link) { 
    try { 
     _gaq.push(['_trackEvent', 'Downloads', 'Click', 'Setup executable']); 
     setTimeout('document.location = "' + link.href + '"', 100); 
    } catch (err) {} 
    return false; 
} 

Ve düğme bir şey olarak:

<a href="files/setup.exe" onclick="return trackDownload(this);">Download</a> 

Yani, bir kullanıcı tıklattığında, Analytics'e bir olay gönderilir ve kullanıcı dosyaya yeniden yönlendirilir.

Bu, harici bağlantı takibi'da da geçerlidir, hiçbir fark yoktur. Ve şimdi benim sorum var. Analytics olayının, kullanıcı yönlendirilmeden önce "işlendiğinden" emin olabilir miyim? Değilse, bu yönlendirme olayın kaybolmasına neden olur? Şu anda olaylar izleniyor, ancak bunların tümünün olduğundan emin olamıyorum.

_gaq.push(function() { document.location = link.href; }); 

Ama bu çalışırsa açık değil ya da bir öncekine sadece eşdeğer olup olmadığını:

ben de Analytics sıraya yönlendirme fonksiyonunu iterek, biraz farklı bir şey deneyebilirsiniz okuyun. Aslında, "" çağrıları _gaq.push [...] komutları, "" iletildikçe yürütür.

cevap

7

Yapabilirsiniz push functions onto the analytics queue. 'Deneme/yakalama push() ISN'de beri gerekli olmadığını

function trackDownload(link) { 
    _gaq.push(['_trackEvent', 'Downloads', 'Click', 'Setup executable']); 
    _gaq.push(function() { document.location = link.href }); 
    return false; 
} 

Not: işlevleri veya izleme etkinliklerinin infaz/sen diziye onları itti sırayla değerlendirilir yana, bunu yapmak mümkün olmalıdır t bir şey atmak için belgelendi (ve boş yakalama blokları mask other problems olabilir beri bunu kaldırmanızı öneririz).

Ama bu çalışırsa açık değil ya da bir öncekine sadece eşdeğer olup olmadığını:

Sen sor. İlk örnekte (itme, setTimeout) olarak

, olay (o zaman, _gaq sadece bir dizidir çünkü) bu yönlendirmeyi yaparken Analytics yüklemeyi bitirmedi ise kaybolur. push(function... numaralı sürümde, olay, kullanıcının indirme düğmesine ulaştığı anda Analytics'in yüklemeyi bitirip bitirmediğine bakılmaksızın yeniden yönlendirmeden önce kaydedilecektir. Bu nedenle, push(function...'u kullanmanızı tavsiye ederim.

yönlendirme (sen yine istediğini gibi sesler olan) gerçekleşmeden önce analitik yüklenmesinin bitmesini için push(function... versiyonu beklemek, ancak analitik yüklemez durumda işlemek için bir yol eklemek isteyebilirsiniz uyardı.

+0

Yönlendirme sırasında "_gaq" içinde yeniden yönlendirmeyi yapabilirim ve daha sonra "catch" bloğunda ve daha gecikmeli "setTimeout" (bir veya iki saniye) içinde tekrarlayabilirim. Yani '_gaq' ile bir şeyler ters giderse, kullanıcının er ya da geç yönlendirildiğinden emin olabilirim. –

+0

Geciken setTimeout'un analitik durumunun ele alınmasının bir yolu olduğunu kabul ediyorum.Ancak, sanırım bir veya iki saniye biraz hızlıdır. Ayrıca, yakalama bloğunun gerekli olmadığını fark ettim - Cevabımı güncelleyeceğim. –

+0

Aslında, bunu neden denediğimi hatırlamıyorum. Try.catch 'bloğu :) Zaman aşımı hakkında: Tıklandığında düğmeye daha uzun bir (5 sn) ve bir çevirici ayarlayabilirim. Yani daha hızlı kullanıcı hiçbir şey olmuyor hissine sahip olmayacak ... –

İlgili konular