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:
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>
Fungsi ini:
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>
Fungsi ini:
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!