S: Menangkap Acara Penutupan Tetingkap/Tab Penyemak Imbas
Saya ingin tangkap peristiwa tutup tetingkap/tab penyemak imbas, tetapi acara "beforeunload" jQuery juga mencetuskan penyerahan borang. Bagaimanakah saya boleh mengehadkan acara kepada penutupan tetingkap?
J: Mengasingkan Acara Penutupan Tetingkap
Walaupun "beforeunload" mengesan sebarang pelepasan halaman, kami boleh mengecualikan penyerahan borang dan hiperpautan menggunakan kod 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 < 1.7:
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; });
Nota: Penyelesaian ini menghalang gesaan pengesahan jika pengendali acara lain membatalkan penyerahan atau navigasi. Untuk menangani perkara ini, rekod masa serah/klik acara dan semak sama ada "sebelum muat" berlaku lebih daripada beberapa saat kemudian.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Penutupan Tetingkap/Tab Penyemak Imbas dengan Amanah Tanpa Mencetuskan Penyerahan Borang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!