Apakah ada kondisi balap saat melacak tautan yang diklik?

Saya ingin melacak klik pengguna di halaman saya. Tapi saya sedikit bingung. Melihat kode ini:

<a href="http://example.com" onClick=”_gaq.push(['_trackEvent', 'External Link', 'Twitter Link', 'Follow Us - Words']);”>Follow Us</a>

^ Bagaimana jika pengguna dialihkan ke http://example.com sebelum google analitics melacak - lalu bagaimana? Apakah saya benar bahwa contoh tersebut memiliki kondisi balapan?


person Dannyboy    schedule 14.07.2014    source sumber
comment
Anda dapat menunda pembukaan situs baru sekitar 100 ms untuk memastikan pelacakan dilakukan   -  person Huangism    schedule 15.07.2014
comment
Saya yakin itu tetap harus dijalankan. Sudahkah Anda mencobanya? juga, Anda dapat menargetkan jendela/tab baru sehingga halaman saat ini tetap terbuka. Saya juga cukup yakin bahwa di dalam Google Analytics terdapat opsi skrip untuk melacak tautan dan klik   -  person Adjit    schedule 15.07.2014
comment
@Adjit _gaq.push hanya mendorong ke array JS standar. Dan kemudian permintaan http tambahan harus dikirim ke server Google. Sejauh yang saya mengerti - siapa yang melakukannya terlebih dahulu: pelacakan atau pengalihan halaman. Dan ya - dalam beberapa kasus mungkin melacak - tetapi dalam beberapa kasus pengalihan akan lebih cepat - bukan?   -  person Dannyboy    schedule 15.07.2014
comment
Sejujurnya saya tidak tahu, itulah sebabnya saya menyarankan Anda mengujinya. Tetapi jika Anda ingin menambahkan penundaan singkat untuk mengizinkan permintaan pelacakan lihat di sini stackoverflow.com/questions/11366627/   -  person Adjit    schedule 15.07.2014
comment
kemungkinan duplikat dari pelacakan peristiwa hitCallback Google Analytics tidak berfungsi   -  person Blexy    schedule 15.07.2014


Jawaban (2)


Tidak ada kondisi balapan. Penangan klik dipanggil dan dijalankan sepenuhnya sebelum navigasi halaman dimulai. Penangan klik itu membuat permintaan ajax yang responsnya tidak penting. Permintaan ajax dimulai sebelum navigasi halaman dimulai.

Jangan tertipu dengan nama metodenya. Menurut Google:

Fungsi ini diberi nama push sehingga array dapat digunakan sebagai pengganti _gaq sebelum Analytics dimuat sepenuhnya. Saat Analytics dimuat, perintah akan dimasukkan/diantrekan ke dalam array. Saat Analytics selesai memuat, Analytics akan mengganti array dengan objek _gaq dan menjalankan semua perintah yang diantrekan. Panggilan selanjutnya ke _gaq.push menyelesaikan fungsi ini, yang mengeksekusi perintah saat didorong.

Meskipun awalnya, .push() hanya memasukkan perintah ke dalam array, setelah Analytics dimuat, perintah tersebut segera dijalankan.

person gilly3    schedule 14.07.2014
comment
Saya tahu tentang transformasi objek array-›. Tapi pelacakan panggilan masih afaik asinkron - bukan? Berikut adalah tiket yang menurut saya menegaskan hal itu: - person Dannyboy; 15.07.2014
comment
@Dannyboy - Saya ingin mencari tahu sendiri, jadi saya memeriksa debugger. Saya menelusuri kode Google yang dikaburkan dan memverifikasi bahwa suar gif dibuat sebelum penangan klik kembali. Ini asinkron karena tidak menunggu respons dari server, tetapi kode yang membuat permintaan (melalui gif beacon) sinkron. - person gilly3; 15.07.2014
comment
terima kasih telah memverifikasi ini! Apakah saya memahami ini dengan benar - bahwa tidak ada jaminan bahwa gif beacon mencapai server Google sebelum halaman dimuat ulang? - person Dannyboy; 15.07.2014
comment
@Dannyboy - Permintaan http terkirim, tidak diragukan lagi. Bisa dibayangkan bahwa halaman tersebut dapat dimuat ulang sebelum Google menerima permintaan tersebut, tapi lalu kenapa? Mengapa penting jika Google menerima permintaan setelah permintaan tautan eksternal diproses, bukan sebelumnya? - person gilly3; 18.07.2014

Kamu bisa melakukan ini:

Dengan jQuery:

$('a').on('click', function(e){
    e.preventDefault();
    var $el = $(this);
    _gaq.push(['_trackEvent', 'External Link', 'Twitter Link', 'Follow Us - Words']);
    setTimeout(function(){
       window.location.href = $el.attr('href');
    }, 100);
});

Tanpa jQuery:

document.getElementById('someIdOfLink').addEventListener('click', function(){
   return false;
   var $el = this;
    _gaq.push(['_trackEvent', 'External Link', 'Twitter Link', 'Follow Us - Words']);
    setTimeout(function(){
       window.location.href = $el.getAttribute('href');
    }, 100);
});

semoga membantu Anda!

person Rubén Guerrero    schedule 14.07.2014