Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mengesan Penutupan Tetingkap Penyemak Imbas Tanpa Memintas Penyerahan Borang?

Bagaimanakah Saya Boleh Mengesan Penutupan Tetingkap Penyemak Imbas Tanpa Memintas Penyerahan Borang?

Barbara Streisand
Lepaskan: 2024-12-13 22:40:14
asal
321 orang telah melayarinya

How Can I Detect Browser Window Closure Without Intercepting Form Submissions?

Merakam Acara Tutup Tetingkap Penyemak Imbas Tanpa Pemintasan Penyerahan Borang

Untuk menangkap peristiwa penutupan tetingkap penyemak imbas secara khusus, mengelakkan konflik dengan penyerahan borang, pemuatan sebelum pemuatan jQuery acara boleh dieksploitasi dengan sedikit pengubahsuaian.

Acara sebelum pemuatan, sebagai ia berdiri, mencetuskan sebarang tindakan yang menyebabkan halaman itu ditinggalkan. Untuk mengehadkannya kepada acara tutup tetingkap sahaja, kami menggunakan pendekatan berikut:

  • Kami mentakrifkan bendera, inFormOrLink, yang ditetapkan kepada benar apabila pautan diklik atau diserahkan. Ini menunjukkan bahawa pengguna sengaja meninggalkan halaman melalui borang atau pautan.
  • Dalam pengendali acara beforeunload, kami menyemak nilai inFormOrLink.

    • Jika ia benar , peristiwa itu dicetuskan oleh penyerahan borang atau klik pautan. Dalam kes ini, kami mengembalikan mesej pengesahan kepada pengguna.
    • Jika ia palsu, peristiwa itu dicetuskan oleh tindakan menutup tetingkap dan kami boleh membenarkan penyemak imbas menutup tetingkap tanpa gangguan.

Kod yang dikemas kini untuk jQuery versi 1.7 dan kemudian:

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 lama jQuery (sebelum 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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Penutupan Tetingkap Penyemak Imbas Tanpa Memintas Penyerahan Borang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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