Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana Membezakan Antara Penyegaran Halaman dan Penutupan Penyemak Imbas dalam JavaScript?

Bagaimana Membezakan Antara Penyegaran Halaman dan Penutupan Penyemak Imbas dalam JavaScript?

DDD
DDDasal
2024-11-03 17:42:29337semak imbas

How to Distinguish Between Page Refresh and Browser Closure in JavaScript?

Mengenalpasti Muat Semula Halaman lwn. Penutupan Penyemak Imbas

Apabila mencetuskan acara ONUNLOAD, menjadi sukar untuk membezakan antara menyegarkan halaman dan menutup penyemak imbas . Artikel ini membentangkan penyelesaian kepada masalah ini.

Penyelesaian

Penyelesaian ini menggunakan storan tempatan HTML5 dan komunikasi AJAX klien pelayan:

  1. Nyahmuat Tetingkap Pengendali:

    • Daftar pengendali onunload pada tetingkap.
    • Dalam pengendali ini, tetapkan bendera storan setempat untuk menunjukkan halaman memunggah (myUnloadEventFlag).
    • Hantar permintaan AJAX kepada pelayan, meminta untuk memutuskan sambungan pengguna selepas kelewatan yang ditentukan (cth., 5 saat)
  2. Pengendali Muatan Badan:

    • Daftar pengendali onload pada badan halaman.
    • Dalam pengendali ini, semak bendera storan setempat untuk acara bongkar muat.
    • Jika perbezaan antara masa semasa dan masa bendera kurang daripada kelewatan yang ditentukan, halaman telah dimuat semula dan permintaan pemutusan sambungan pelayan mesti dibatalkan.
    • Jika tidak, ia adalah penutupan penyemak imbas.
  3. Pelayan Pengendalian:

    • Kekalkan senarai permintaan pemutusan sambungan.
    • Jalankan pemasa yang kerap memeriksa senarai.
    • Apabila tamat masa permintaan tamat, putuskan sambungan pengguna.
    • Jika permintaan pembatalan diterima, alih keluar permintaan pemutusan sambungan yang sepadan daripada senarai.

Pendekatan ini membezakan antara penutupan tab/tetingkap dan muat semula halaman dengan mengambil kira masa acara pemunggahan. Ia boleh digunakan untuk acara lain seperti pautan diikuti dan borang yang diserahkan dengan meletakkan pengendali acara pada halaman yang berkaitan.

Penghadan:

Penyelesaian ini memerlukan sokongan storan setempat HTML5 dan mungkin tidak berfungsi pada pelayar lama seperti MSIE7.

Atas ialah kandungan terperinci Bagaimana Membezakan Antara Penyegaran Halaman dan Penutupan Penyemak Imbas dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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