Rumah > hujung hadapan web > tutorial js > Bagaimana Membezakan Antara Penyegaran Penyemak Imbas dan Penutupan Tetingkap?

Bagaimana Membezakan Antara Penyegaran Penyemak Imbas dan Penutupan Tetingkap?

Patricia Arquette
Lepaskan: 2024-11-04 04:54:02
asal
750 orang telah melayarinya

How to Distinguish Between a Browser Refresh and a Window Close?

Membezakan Antara Muat semula dan Tutup Tindakan Penyemak Imbas

Menentukan perbezaan antara menyegarkan halaman dan menutup penyemak imbas mungkin kelihatan mencabar, kerana kedua-dua tindakan mencetuskan acara ONUNLOAD. Walau bagaimanapun, terdapat penyelesaian untuk teka-teki ini.

Penyelesaian:

Pendekatan ini memanfaatkan storan tempatan HTML5 dan komunikasi pelayan-pelayan:

  1. Pengendali ONUNLOAD: Pada halaman, tambahkan pengendali semasa punggah pada tetingkap menggunakan pseudo-JavaScript:

    <code class="javascript">function myUnload(event) {
        if (window.localStorage) {
            window.localStorage['myUnloadEventFlag'] = new Date().getTime();
        }
        askServerToDisconnectUserInAFewSeconds(); // Synchronous AJAX call
    }</code>
    Salin selepas log masuk

    Fungsi ini:

    • Membenderakan halaman sebagai memunggah dalam storan setempat.
    • Secara tak segerak memberitahu pelayan untuk memutuskan sambungan pengguna dalam beberapa saat.
  2. ONLOAD Handler: Pada badan, tambahkan on-load handler:

    <code class="javascript">function myLoad(event) {
        if (window.localStorage) {
            var t0 = Number(window.localStorage['myUnloadEventFlag']);
            if (isNaN(t0)) t0 = 0;
            var t1 = new Date().getTime();
            var duration = t1 - t0;
            if (duration < 10 * 1000) {
                // Browser reload
                askServerToCancelDisconnectionRequest(); // Asynchronous AJAX call
            } else {
                // Tab/window close
                // Perform desired actions (e.g., do nothing)
            }
        }
    }</code>
    Salin selepas log masuk

    Fungsi ini:

    • Menyemak perbezaan masa sejak acara pemunggahan sebelumnya.
    • Jika kurang daripada 10 saat telah berlalu, ia adalah muat semula penyemak imbas.
    • Jika lebih daripada 10 saat telah berlalu, ia adalah penutupan tab/tetingkap.
  3. Pelayan Interaksi: Pada pelayan, kekalkan senarai permintaan pemutusan sambungan dan gunakan benang pemasa untuk memeriksa senarai. Proses permintaan pemutusan sambungan selepas tamat masa (cth., 5 saat) dan kendalikan pembatalan jika diterima.

Penyelesaian ini berfungsi untuk membezakan antara penutupan tab/tetingkap, muat semula tindakan, pautan yang diikuti dan borang yang diserahkan. Ia boleh digunakan dalam penyemak imbas dengan sokongan storan tempatan HTML5. Walau bagaimanapun, ambil perhatian bahawa ia bergantung pada acara pemunggahan dan mungkin tidak serasi dengan pelayar lama seperti MSIE7.

Atas ialah kandungan terperinci Bagaimana Membezakan Antara Penyegaran Penyemak Imbas dan Penutupan Tetingkap?. 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