Pembaruan (2017)
Browser modern sekarang mempertimbangkan menampilkan pesan khusus sebagai bahaya keamanan dan karenanya telah dihapus dari semuanya. Browser sekarang hanya menampilkan pesan umum. Karena kita tidak perlu lagi khawatir tentang pengaturan pesan, itu sesederhana:
// Enable navigation prompt
window.onbeforeunload = function() {
return true;
};
// Remove navigation prompt
window.onbeforeunload = null;
Baca di bawah untuk dukungan browser lawas.
Pembaruan (2013)
Jawaban asli cocok untuk IE6-8 dan FX1-3.5 (yang kami targetkan kembali pada tahun 2009 ketika ditulis), tetapi agak ketinggalan zaman sekarang dan tidak akan berfungsi di sebagian besar browser saat ini - saya telah meninggalkan di bawah ini untuk referensi.
Ini window.onbeforeunload
tidak diperlakukan secara konsisten oleh semua browser. Itu harus berupa referensi fungsi dan bukan string (seperti jawaban asli dinyatakan) tetapi itu akan berfungsi di browser yang lebih lama karena cek untuk sebagian besar dari mereka tampaknya apakah ada sesuatu yang ditugaskan onbeforeunload
(termasuk fungsi yang mengembalikan null
).
Anda mengatur window.onbeforeunload
ke referensi fungsi, tetapi di browser lama Anda harus mengatur returnValue
acara bukan hanya mengembalikan string:
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;
};
Anda tidak dapat confirmOnPageExit
melakukan itu dengan memeriksa dan mengembalikan nol jika Anda ingin pengguna melanjutkan tanpa pesan. Anda masih harus menghapus acara untuk menyalakan dan mematikannya dengan andal:
// Turn it on - assign the function that returns the string
window.onbeforeunload = confirmOnPageExit;
// Turn it off - remove the function entirely
window.onbeforeunload = null;
Jawaban asli (bekerja pada 2009)
Untuk mengaktifkannya:
window.onbeforeunload = "Are you sure you want to leave?";
Untuk mematikannya:
window.onbeforeunload = null;
Ingatlah bahwa ini bukan peristiwa biasa - Anda tidak dapat mengikatnya dengan cara standar.
Untuk memeriksa nilai? Itu tergantung pada kerangka validasi Anda.
Di jQuery ini bisa berupa (contoh sangat mendasar):
$('input').change(function() {
if( $(this).val() != "" )
window.onbeforeunload = "Are you sure you want to leave?";
});