Güncelleme (2017)
Modern tarayıcılar artık özel bir mesaj görüntülemeyi bir güvenlik tehlikesi olarak görmektedir ve bu nedenle bunların tümü kaldırılmıştır . Tarayıcılar artık yalnızca genel mesajları gösteriyor. Artık mesajı ayarlamak konusunda endişelenmemiz gerekmediğinden, bu kadar basit:
// Enable navigation prompt
window.onbeforeunload = function() {
return true;
};
// Remove navigation prompt
window.onbeforeunload = null;
Eski tarayıcı desteği için aşağıyı okuyun.
Güncelleme (2013)
Orjinal cevap IE6-8 ve FX1-3.5 için uygundur (yazıldığında 2009'da hedeflediğimiz şeydir), ancak şimdi oldukça güncel değil ve mevcut tarayıcıların çoğunda çalışmayacak - ayrıldım referans için aşağıda.
window.onbeforeunload
Tüm tarayıcılar tarafından sürekli tedavi edilmez. Bir işlev başvurusu olmalı ve bir dize değil (orijinal yanıt belirtildiği gibi), ancak eski tarayıcılarda çalışacaktır, çünkü çoğunun kontrolü, herhangi bir şeyin atanıp atanmadığı onbeforeunload
(geri dönen bir işlev dahil null
) gibi görünmektedir .
window.onbeforeunload
Bir işlev referansına ayarladınız , ancak eski tarayıcılarda returnValue
yalnızca bir dize döndürmek yerine etkinliği ayarlamanız gerekir :
var confirmOnPageExit = function (e)
{
// If we haven't been passed the event get the window.event
e = e || window.event;
var message = 'Any text will block the navigation and display a prompt';
// For IE6-8 and Firefox prior to version 4
if (e)
{
e.returnValue = message;
}
// For Chrome, Safari, IE8+ and Opera 12+
return message;
};
Bunu olamaz confirmOnPageExit
kullanıcı mesajı olmadan devam etmek istiyorsanız onay ve dönüş null adlı yapmak. Etkinliği güvenilir bir şekilde açmak ve kapatmak için etkinliği kaldırmanız gerekir:
// Turn it on - assign the function that returns the string
window.onbeforeunload = confirmOnPageExit;
// Turn it off - remove the function entirely
window.onbeforeunload = null;
Orijinal cevap (2009'da çalıştı)
Açmak için:
window.onbeforeunload = "Are you sure you want to leave?";
Kapatmak için:
window.onbeforeunload = null;
Bunun normal bir olay olmadığını aklınızda bulundurun - buna standart şekilde bağlanamazsınız.
Değerleri kontrol etmek için? Bu, doğrulama çerçevenize bağlıdır.
JQuery'de bu şöyle bir şey olabilir (çok temel bir örnek):
$('input').change(function() {
if( $(this).val() != "" )
window.onbeforeunload = "Are you sure you want to leave?";
});