Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mengesan Penutupan Tetingkap/Tab Penyemak Imbas dengan Amanah Tanpa Mencetuskan Penyerahan Borang?

Bagaimanakah Saya Boleh Mengesan Penutupan Tetingkap/Tab Penyemak Imbas dengan Amanah Tanpa Mencetuskan Penyerahan Borang?

Patricia Arquette
Lepaskan: 2024-12-20 22:25:17
asal
582 orang telah melayarinya

How Can I Reliably Detect Browser Window/Tab Closure Without Triggering on Form Submissions?

Menentukan Penutupan Tetingkap Penyemak Imbas/Tab

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; 
});
Salin selepas log masuk

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; 
});
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan