Heim >Web-Frontend >js-Tutorial >Wie kann man mithilfe des lokalen HTML5-Speichers zwischen Browser-Aktualisierung und -Schließung unterscheiden?

Wie kann man mithilfe des lokalen HTML5-Speichers zwischen Browser-Aktualisierung und -Schließung unterscheiden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 16:26:29393Durchsuche

How to Distinguish Between Browser Refresh and Closure Using HTML5 Local Storage?

Identifizieren zwischen Browser-Aktualisierungs- und Browser-Schließaktionen

Die Unterscheidung zwischen Seitenaktualisierung und Browser-Schließung kann eine Herausforderung darstellen, wenn beide Aktionen das ONUNLOAD-Ereignis auslösen. Es gibt jedoch eine Lösung, die lokalen HTML5-Speicher und Client/Server-AJAX-Kommunikation verwendet.

Onunload-Ereignisbehandlung

Fügen Sie im Fenster Ihrer Seite einen Onunload-Ereignishandler hinzu:

function myUnload(event) {
    // Set a local storage flag indicating an unload event
    if (window.localStorage) {
        window.localStorage['myUnloadEventFlag'] = new Date().getTime();
    }

    // Notify the server of a disconnection request
    askServerToDisconnectUserInAFewSeconds(); // Synchronous AJAX call
}

Onload-Ereignisbehandlung

Fügen Sie im Hauptteil Ihrer Seite einen Onload-Ereignishandler hinzu:

function myLoad(event) {
    if (window.localStorage) {
        // Check the time between the last unload event and the current time
        var t0 = Number(window.localStorage['myUnloadEventFlag']);
        var t1 = new Date().getTime();
        var duration = t1 - t0;

        if (duration < 10 * 1000) {
            // Page reloaded: Cancel disconnection request
            askServerToCancelDisconnectionRequest(); // Asynchronous AJAX call
        } else {
            // Tab/window closed: Perform desired action
        }
    }
}

Serverseitige Verwaltung

Implementieren Sie auf dem Server einen Prozess zum Sammeln von Verbindungstrennungsanfragen und planen Sie einen Timer-Thread, um nach Zeitüberschreitungsanfragen zu suchen. Trennen Sie Benutzer mit Timeout-Anfragen innerhalb von 5 Sekunden (in diesem Beispiel). Wenn ein Verbindungsabbruch empfangen wird, entfernen Sie die entsprechende Anfrage aus der Liste.

Dieser Ansatz kann auch verwendet werden, um zwischen dem Schließen von Tabs/Fenstern und dem Absenden von Links/Formularen zu unterscheiden. Platzieren Sie die Event-Handler auf allen Seiten mit Links oder Formularen und deren Zielseiten.

Obwohl diese Lösung lokalen Speicher verwendet, beachten Sie, dass sie möglicherweise nicht für Browser geeignet ist, die den lokalen HTML5-Speicher nicht unterstützen. Erwägen Sie spezifische Ansätze für den Umgang mit diesen Szenarien.

Das obige ist der detaillierte Inhalt vonWie kann man mithilfe des lokalen HTML5-Speichers zwischen Browser-Aktualisierung und -Schließung unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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