2013-05-14 20 views
11

Şu anda sitemdeki bir kullanıcının pencereyi/sekmeyi kapatıp kapatmadığını veya URL'yi değiştirip değiştirmediğini tespit ediyorum.javascript pencere üzerinde yakın olay

Ben mükemmel çalışıyor follwoing kodu, kullanıyorum:

var validNavigation = false; 

function endSession() { 
    // Browser or broswer tab is closed 
    // Do sth here ... 
    alert("bye"); 

} 

function wireUpEvents() { 

    window.onbeforeunload = function() { 
     if (!validNavigation) { 
     endSession(); 
     } 
    } 

    // Attach the event keypress to exclude the F5 refresh 
    $(document).bind('keypress', function(e) { 
    if (e.keyCode == 116){ 
     validNavigation = true; 
    } 
    }); 

    // Attach the event click for all links in the page 
    $("a").bind("click", function() { 
    validNavigation = true; 
    }); 

    // Attach the event submit for all forms in the page 
    $("form").bind("submit", function() { 
    validNavigation = true; 
    }); 

    // Attach the event click for all inputs in the page 
    $("input[type=submit]").bind("click", function() { 
    validNavigation = true; 
    }); 

} 


$(document).ready(function() { 
    wireUpEvents(); 
}); 

Sorunum ben bir bindirme için uyarıdan olayı değiştirmek istiyorum olduğunu. Ben gizli bir div bindirme kurulum işlemlerini daha var ve yukarıdaki kodu uyarısı değiştirilir:

$('.overlay').css('display','block'); 

sayfada kalmak için kullanıcı almak için div içinde bir şey yok gibi bu artık çalışır. (kullanıcının bir uyarı içindeki bir düğmeyi tıklamasına gerek yoktur)

Bu konuyla ilgili nasıl bir öneride bulunabilirim?

Alkış Dan

+0

Neden sadece 'window.onbeforeunload' kullanmıyorsun? Biliyorum, bu bir fantezi 'div' değil, ama kesinlikle bu tür şeyler için tasarlandı. – Powerslave

+0

window.onbeforeunload bir seçimdi ama şimdi stil gerektiren bir fantezi div'a ihtiyacım var. – danyo

+0

http://stackoverflow.com/questions/276660/how-can-i-override-the-onbeforeunload-dialog-and-replace-it-with-my-own/276739 –

cevap

8

pencere yakın olay en son olay olarak ateşlenir. Bu nedenle bundan sonra başka hiçbir olay kovulmaz.

Ekrandaki bindirmeyi göstermek için Junery ile önceki yüklemeyi kullanabilirsiniz.

aşağıdaki linki yardımcı olabilir: link

+0

için çoğaltılacaksınız. * yardımsever. TEŞEKKÜR EDERİM! – Ethereal

İlgili konular