Membezakan Tindakan Penyemak Imbas: Muat Semula vs. Tutup
Dalam pembangunan web, membezakan antara penyegaran halaman dan penutupan penyemak imbas semasa acara ONUNLOAD boleh menimbulkan cabaran. Berikut ialah penyelesaian yang memanfaatkan storan tempatan HTML5 dan komunikasi pelanggan/pelayan:
-
Pada Halaman Nyahmuat:
- Laksanakan pengendali acara yang tidak dimuatkan pada tetingkap, seperti myUnload().
- Tetapkan bendera storan tempatan myUnloadEventFlag kepada cap masa semasa.
- Beritahu pelayan bahawa pemutusan sambungan (cth., penutupan penyemak imbas) mungkin berlaku dalam beberapa saat melalui panggilan AJAX (askServerToDisconnectUserInAFewSeconds()).
-
On Page Load:
- Laksanakan pengendali acara onload pada badan, seperti myLoad().
- Dapatkan semula myUnloadEventFlag daripada storan setempat dan bandingkannya dengan cap masa semasa.
- Jika tempoh antara acara pemunggahan sebelumnya dan semasa kurang daripada 10 saat, ia berkemungkinan memuat semula (batalkan permintaan pemutusan sambungan melalui askServerToCancelDisconnectionRequest()).
- Jika tempoh lebih daripada 10 saat, ini mungkin penutupan penyemak imbas.
-
Sisi Pelayan:
- Kumpul permintaan pemutusan sambungan dalam senarai dan tetapkan urutan pemasa (cth., setiap 20 saat) untuk memeriksa senarai.
- Apabila permintaan pemutusan sambungan tamat (cth., selepas 5 saat), putuskan sambungan pengguna.
- Jika permintaan pembatalan diterima, alih keluar permintaan pemutusan sambungan yang sepadan daripada senarai.
Pendekatan ini juga boleh membezakan antara penutupan tab/tetingkap, pautan diikuti dan borang yang diserahkan. Ia terpakai kepada penyemak imbas yang menyokong storan setempat HTML5 dan ia lebih dipercayai daripada bergantung pada sifat acara tertentu seperti kedudukan kursor.
Atas ialah kandungan terperinci Bagaimana Boleh Membezakan Antara Penyegaran Halaman dan Penutupan Penyemak Imbas dalam Pembangunan Web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!