Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menangkap Acara Tutup Tetingkap Penyemak Imbas Tanpa Mencetuskan pada Penyerahan Borang atau Hiperpautan?
Merakam Acara Tutup Tetingkap Penyemak Imbas Semasa Mengecualikan Penyerahan Borang dan Hiperpautan
Acara sebelum pemuatan dalam jQuery direka untuk mengesan apabila pengguna meninggalkan halaman . Walau bagaimanapun, peristiwa ini juga tercetus semasa penyerahan borang, yang mungkin tidak diingini dalam senario tertentu. Artikel ini meneroka pendekatan untuk mengecualikan penyerahan borang dan hiperpautan (kecuali daripada bingkai lain) daripada acara sebelum pemunggahan.
Untuk mencapai ini, kami mula-mula memulakan pembolehubah inFormOrLink kepada palsu. Apabila pengguna mengklik pada hiperpautan atau menyerahkan borang, kami menetapkan inFormOrLink kepada benar.
Dalam pengendali acara beforeunload, kami menyemak nilai inFormOrLink. Jika ia benar, kami menggesa pengguna untuk pengesahan dengan mesej "Adakah anda benar-benar mahu menutup?" Sebaliknya, jika inFormOrLink adalah palsu, kami mengembalikan null untuk menyekat gesaan pengesahan.
Berikut ialah coretan kod yang disemak untuk jQuery versi 1.7 dan ke atas:
var inFormOrLink = false; $('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 di bawah 1.7, gunakan kod berikut:
var inFormOrLink = false; $('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; });
Pendekatan ini dengan berkesan menangkap peristiwa penutupan tetingkap penyemak imbas sambil tidak termasuk penyerahan borang dan hiperpautan (kecuali daripada bingkai lain).
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangkap Acara Tutup Tetingkap Penyemak Imbas Tanpa Mencetuskan pada Penyerahan Borang atau Hiperpautan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!