The beforeunload
event kebakaran setiap kali pengguna meninggalkan halaman Anda untuk alasan apapun.
Misalnya, itu akan dipecat jika pengguna mengirimkan formulir, mengklik tautan, menutup jendela (atau tab), atau pergi ke halaman baru menggunakan bilah alamat, kotak pencarian, atau bookmark.
Anda bisa mengecualikan pengiriman formulir dan hyperlink (kecuali dari frame lain) dengan kode berikut:
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;
})
Untuk versi jQuery yang lebih tua dari 1,7, coba ini:
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;
})
The live
Metode tidak bekerja dengan submit
acara, jadi jika Anda menambahkan bentuk baru, Anda akan perlu untuk mengikat pawang untuk itu juga.
Perhatikan bahwa jika pengendali acara yang berbeda membatalkan pengiriman atau navigasi, Anda akan kehilangan konfirmasi jika jendela benar-benar ditutup nanti. Anda dapat memperbaikinya dengan merekam waktu di submit
dan click
acara, dan memeriksa jika itu beforeunload
terjadi lebih dari beberapa detik kemudian.