2010-12-02 20 views

cevap

4

istemci tarafı komut dosyası:

< body onbeforeunload="window.open('http://www.website.com/browserclosed.aspx','mywindow','width=1,height=1');"> 

sunucu tarafı komut dosyası (browserclosed.aspx):

// page_load 

int userId = Convert.ToInt32(request.session("userId")); 
ReportBrowserClosed(userId); 
// Do what you want in ReportBrowserclosed() method 
9

Kısa cevap: http vatansız olması nedeniyle doğrudan o yapamaz. Belki bazı AJAX hearbeat havuzu, oturum zaman aşımı algılama ve diğer hileler kullanabilirsiniz.

daha açıklama ve fikirler için this question bir göz atın. Bu Java tabanlı, ancak fikirler dil agnostik. akla gelen

0

ilk şey (pencere kapalı) Eğer boşaltma olayı kanca ve sadece uyumsuz tarayıcı uzakta sitesinden gidilmiştir geri göndermeden olmasıdır. Bununla birlikte, HTTP'nin vatansız web siteleri oluşturmak için kullanılma biçimi bunu mümkün kılmamaktadır. Sadece kullanıcı bağlantısını takip etmenin güvenilir bir yolu yok.

Birden çok oturumla nasıl başa çıkacağınızı düşünün? Aynı siteye çok sayıda, birkaç sekmede veya pencerede açık bir tane varsa ve hepsini kapatıyorsam hala bağlı olduğumu nasıl anlıyorsunuz? Ve eğlenmek için, tarayıcımın aralarında bir yere çarptığını söyle. şeydir

, bir nevi sorununuzu çözecek şey tasarım olabilir. Ancak, hiçbir zaman güvenilir olmayacaktır çünkü HTTP, bağlantı için yerleşik bir kontrol mekanizmasına sahip değildir.

Ben bir takip soruyla, bu soruya cevap vermek zorunda. Tarayıcı penceresinin ne zaman kapatıldığını bilmek zorundasınız?

Eğer daha güvenilir kullanabilirsiniz ASP.NET ile kolaylaştırılır iki sunucu tarafında olaylar, orada temizlemek bazı kaynak yapmak gerekirse. Ve bu Session_End veya Application_End.

+0

Ben OP için cevap veremez, ancak bunu yapmanın bir yaygın nedeni bir durdurmaktır Kullanıcı vazgeçip tarayıcısını kapattığında uzun süren işlem (sorgu, rapor oluşturma, vb.). – Gabe

0

Çok açık bir soru, buna neden ihtiyaç duyuyorsunuz? Çıkış zamanını mı yoksa kapanış saatini mi saklamak istiyorsunuz? Daha sonra oturum zaman aşımında yakalamak daha iyi. Başka bir sayfayı yeniden yönlendirmek istiyorsan, daha sonra javascript'in sayfa boşaltma etkinliğini yakalamak için daha iyi.