SORU
27 EKİM 2009, Salı


Nasıl Pencereyi Kapat olay yakalamak için?

Tarayıcı pencere yakalama/kapat olay sekmesini istiyorum. JQuery ile aşağıdaki denedim:

jQuery(window).bind(
    "beforeunload", 
    function() { 
        return confirm("Do you really want to close?") 
    }
)

Ama formun üzerinde iyi çalışır, istediğim bir şey değil. Tek kullanıcı pencereyi kapattığında tetikleyen bir olay istiyorum.

CEVAP
27 EKİM 2009, Salı


beforeunload olay kullanıcı herhangi bir nedenle sayfa çıkınca patlar.

Örneğin, olacak ateş eğer kullanıcı bir form gönderdiğinde, bir bağlantı tıklama, kapanır pencere (veya sekmesi) veya gider için yeni bir sayfa kullanarak adres çubuğu, arama kutusu, ya da bir yer imi.

Aşağıdaki kod ile form tabanlı gönderimleri ve köprüler (diğer Kare hariç) hariç:

var inFormOrLink;
$('a').on('click', function() { inFormOrLink = true; });
$('form').on('submit', function() { inFormOrLink = true; });

$(window).on("beforeunload", function() { 
    return inFormOrLink ? "Do you really want to close?" : null; 
})

JQuery eski sürümleri için 1.7, bunu deneyin: daha

var inFormOrLink;
$('a').live('click', function() { inFormOrLink = true; });
$('form').bind('submit', function() { inFormOrLink = true; });

$(window).bind("beforeunload", function() { 
    return inFormOrLink ? "Do you really want to close?" : null; 
})

live yöntem ise yeni bir form eklerseniz, amiri de bağlamak gerekir submit olay ile işe yaramaz.

Eğer farklı bir olay işleyicisi gönder veya navigasyon iptal ederse, istemi penceresi aslında üstü kapalı onay kaybedersiniz unutmayın. submit click olayları zaman kayıt, ve eğer beforeunload Bir kaç saniye daha geç olursa kontrol ederek tamir edebilirsin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • MyCyberAcademy

    MyCyberAcade

    2 EKİM 2011
  • UlyssesForever's channel

    UlyssesForev

    28 ŞUBAT 2012