Tüm Özellikler

Ayrılma Takibi

sendBeacon ile sekme kapanırken veri gönderilir.

Klasik XHR ile gönderilen istekler, kullanıcı sekmeyi kapattığı anda tarayıcı tarafından iptal edilir. Veri uçar.

Veribenim, <strong>pagehide</strong> eventinde <strong>navigator.sendBeacon</strong> çağırır. Beacon, tarayıcı kapatılsa bile kuyruğa alınıp gönderilir.

#sendBeacon#pagehide#Oturum Süresi#Exit Log

Oturum #4821 — Zaman Çizelgesi

visit/14:32:01
visit/blog/kvkk14:32:29
accept_all/fiyatlar14:38:46
exit/kayit14:40:06
Toplam Süre8m 05s

pagehide → sendBeacon ile kaydedildi

Neden XHR Yetersiz?

❌ XHR / Fetch

Sekme kapanınca istek iptal edilir

  • Kullanıcı sekmeyi kapatırken fetch isteği tarayıcı tarafından iptal edilir
  • beforeunload / unload eventleri güvenilmez — özellikle mobilde hiç tetiklenmeyebilir
  • Sonuç: Oturum süresi verisi uçar, çıkış kaydı oluşmaz

✅ navigator.sendBeacon

Tarayıcı kuyruğa alır, teslim eder

  • pagehide eventinde çağrılır — mobil de dahil tüm modern tarayıcılarda tetiklenir
  • Tarayıcı, beacon'ı kuyruğa alır; sekme kapansa bile arka planda gönderir
  • Ana thread bloke olmaz, kullanıcı herhangi bir gecikme yaşamaz

Ne Kaydedilir?

Çıkış Zamanı

Beacon timestamp'i ile ziyaretçinin tam ayrılış anı milisaniye hassasiyetinde kaydedilir.

Toplam Oturum Süresi

İlk visit logundan exit loguna kadar geçen süre hesaplanır. Maksimum 30 dakika cap uygulanır — çok uzun kalan sekmeler istatistiği bozmaz.

is_exit Flag

Backend, bu isteğin bir çıkış beacon'ı olduğunu bilir. Impression sayacı artırılmaz, yalnızca exit logu oluşturulur.

Kod

// Ayrılma tespiti (bundle içi)

sendExitBeacon: function() {

var data = utils.getLocalStorage('veribenimIsAwesome');

if (!data || !navigator.sendBeacon) return;

var payload = JSON.stringify({

session_id: data.sessionId,

last_visit: new Date().toISOString(),

is_exit: true

});

navigator.sendBeacon(config.trackingUrl, payload);

}

// Tetikleyici

window.addEventListener('pagehide', sendExitBeacon);

Yalnızca <code>pagehide</code> eventi kullanılmaktadır. <code>visibilitychange</code> ve <code>beforeunload</code> implemente edilmemiştir.

Gerçek oturum sürelerini ölçün