Heim > Web-Frontend > js-Tutorial > Wie kann man im onUnload-Ereignis zwischen Seitenaktualisierung und Browser-Schließen unterscheiden?

Wie kann man im onUnload-Ereignis zwischen Seitenaktualisierung und Browser-Schließen unterscheiden?

Patricia Arquette
Freigeben: 2024-11-04 03:51:29
Original
444 Leute haben es durchsucht

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

Unterscheidung zwischen Seitenaktualisierungs- und Browser-Schließaktionen

Wenn das ONUNLOAD-Ereignis entweder durch eine Seitenaktualisierung oder ein Browser-Schließen ausgelöst wird, stellt es eine Herausforderung dar, zwischen den beiden Aktionen zu unterscheiden .

Um dieses Problem zu beheben, nutzt die folgende Lösung lokalen HTML5-Speicher und Client/Server-AJAX-Kommunikation:

Lösungsimplementierung

Page onLoad Event 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) {
            // It's a browser reload
        } else {
            // It's a browser close
        }
    }
}</code>
Nach dem Login kopieren

Seite zum Unload Event Handler

<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>
Nach dem Login kopieren

Serverimplementierung

  • Trennungsanfragen in einer Liste sammeln.
  • Legen Sie einen Timer-Thread fest, um die Liste regelmäßig zu überprüfen Trennen Sie Benutzer nach einer Zeitüberschreitung (5 Sekunden).
  • Entfernen Sie Verbindungstrennungsanfragen aus der Liste, wenn Sie Stornierungsanfragen vom Client erhalten.

Wichtige Punkte

  • Durch die Verwendung des Unload-Ereignisses anstelle von beforeUnload können Anhänge ordnungsgemäß verarbeitet werden.
  • Diese Lösung ist auf Browser beschränkt, die den lokalen HTML5-Speicher unterstützen.
  • Alternative Ansätze, die auf event.clientY oder X-Position basieren, sind weniger zuverlässig.

Das obige ist der detaillierte Inhalt vonWie kann man im onUnload-Ereignis zwischen Seitenaktualisierung und Browser-Schließen unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage