Rumah >hujung hadapan web >tutorial js >Bagaimana Membezakan Antara Penyegaran Halaman dan Tutup Penyemak Imbas dalam Acara onUnload?

Bagaimana Membezakan Antara Penyegaran Halaman dan Tutup Penyemak Imbas dalam Acara onUnload?

Patricia Arquette
Patricia Arquetteasal
2024-11-04 03:51:29512semak imbas

How to Distinguish Between Page Refresh and Browser Close in the onUnload Event?

Membezakan Antara Muat semula Halaman dan Tindakan Tutup Penyemak Imbas

Apabila dicetuskan sama ada penyegaran halaman atau penutupan penyemak imbas, acara ONUNLOAD memberikan cabaran dalam membezakan antara kedua-dua tindakan .

Untuk menangani isu ini, penyelesaian berikut menggunakan storan setempat HTML5 dan komunikasi AJAX klien/pelayan:

Pelaksanaan Penyelesaian

Pengendali Acara Halaman onLoad

<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) {
            // It's a browser reload
        } else {
            // It's a browser close
        }
    }
}</code>

Halaman diUnload Pengendali Acara

<code class="javascript">function myUnload(event) {
    if (window.localStorage) {
        // Flag the page as unloading
        window.localStorage['myUnloadEventFlag']=new Date().getTime();
    }

    // Notify the server to disconnect the user in a few seconds
    askServerToDisconnectUserInAFewSeconds();
}</code>

Pelaksanaan Pelayan

  • Kumpul permintaan pemutusan sambungan dalam senarai.
  • Tetapkan urutan pemasa untuk memeriksa senarai dengan kerap dan putuskan sambungan pengguna selepas tamat masa (5 saat).
  • Alih keluar permintaan pemutusan sambungan daripada senarai apabila menerima permintaan pembatalan daripada pelanggan.

Mata Utama

  • Dengan menggunakan acara bongkar dan bukannya beforeUnload, lampiran boleh dikendalikan dengan betul.
  • Penyelesaian ini terhad kepada penyemak imbas yang menyokong storan setempat HTML5.
  • Pendekatan alternatif berdasarkan kedudukan event.clientY atau X adalah kurang dipercayai.

Atas ialah kandungan terperinci Bagaimana Membezakan Antara Penyegaran Halaman dan Tutup Penyemak Imbas dalam Acara onUnload?. 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