503 Stimmen

Wie kann man ein localStorage-Element löschen, wenn das Browserfenster/der Tab geschlossen wird?

Mein Fall: localStorage mit Schlüssel + Wert, der gelöscht werden soll, wenn der Browser geschlossen wird und nicht ein einzelner Tab.

Bitte sehen Sie sich meinen Code an, ob er richtig ist und was verbessert werden kann:

//create localStorage key + value if not exist
if (localStorage) {
  localStorage.myPageDataArr = {
    "name" => "Dan",
    "lastname" => "Bonny"
  };
}

//when browser closed - psedocode
$(window).unload(function() {
  localStorage.myPageDataArr = undefined;
});

3voto

miztaken Punkte 155

Ich glaube nicht, dass die hier vorgestellte Lösung 100%ig korrekt ist, da das Ereignis window.onbeforeunload nicht nur beim Schließen des Browsers/Tabs aufgerufen wird (was erforderlich ist), sondern auch bei allen anderen Ereignissen. (WAS VIELLEICHT NICHT ERFORDERLICH IST)

Unter diesem Link finden Sie weitere Informationen über die Liste der Ereignisse, die window.onbeforeunload auslösen können: -

http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx

3voto

rdonatoiop Punkte 1187

Hier ist ein einfacher Test, um festzustellen, ob Ihr Browser die Arbeit mit dem lokalen Speicher unterstützt:

if(typeof(Storage)!=="undefined") {
  console.log("localStorage and sessionStorage support!");
  console.log("About to save:");
  console.log(localStorage);
  localStorage["somekey"] = 'hello';
  console.log("Key saved:");
  console.log(localStorage);
  localStorage.removeItem("somekey");  //<--- key deleted here
  console.log("key deleted:");
  console.log(localStorage);
  console.log("DONE ===");
} else {
  console.log("Sorry! No web storage support..");
}

Bei mir hat es wie erwartet funktioniert (ich verwende Google Chrome). Angepasst von: http://www.w3schools.com/html/html5_webstorage.asp .

2voto

Moshiur Rahman Punkte 1392

Sie können einfach sessionStorage verwenden. Denn SessionStorage erlaubt es, alle Schlüsselwerte zu löschen, wenn das Browserfenster geschlossen wird.

Siehe dort : SessionStorage- MDN

1voto

xryl669 Punkte 3148

Dies ist eine alte Frage, aber es scheint, dass keine der obigen Antworten perfekt ist.

Wenn Sie Authentifizierungsdaten oder andere sensible Informationen speichern möchten, die erst beim Schließen des Browsers vernichtet werden, können Sie sich auf sessionStorage y localStorage für die tabellenübergreifende Nachrichtenübermittlung.

Der Grundgedanke ist folgender:

  1. Sie booten von keiner zuvor geöffneten Registerkarte, so dass sowohl Ihre localStorage y sessionStorage leer sind (wenn nicht, können Sie die localStorage ). Sie müssen einen Nachrichten-Ereignis-Listener auf der localStorage .
  2. Der Benutzer authentifiziert/erstellt eine sensible Information auf dieser Registerkarte (oder einer anderen auf Ihrer Domäne geöffneten Registerkarte).
  3. Sie aktualisieren die sessionStorage um die sensiblen Informationen zu speichern, und verwenden Sie die localStorage um diese Informationen zu speichern, und löschen Sie sie dann (der Zeitpunkt spielt hier keine Rolle, da das Ereignis in die Warteschlange gestellt wurde, als sich die Daten änderten). Jede andere Registerkarte, die zu diesem Zeitpunkt geöffnet ist, wird durch das Nachrichtenereignis zurückgerufen und aktualisiert ihre sessionStorage mit den sensiblen Informationen.
  4. Wenn der Benutzer eine neue Registerkarte auf Ihrer Domäne öffnet, wird seine sessionStorage leer sein wird. Der Code muss einen Schlüssel in der Datei localStorage (z.B.: req ). Jede(r) andere Reiter wird im Nachrichtenereignis zurückgerufen, sieht diesen Schlüssel und kann mit den sensiblen Informationen aus seinem sessionStorage (wie in 3), wenn sie solche haben.

Bitte beachten Sie, dass diese Regelung nicht abhängig ist von window.onbeforeunload Ereignis, das anfällig ist (da der Browser geschlossen/abgestürzt werden kann, ohne dass diese Ereignisse ausgelöst werden). Außerdem wird die Zeit, in der die sensiblen Informationen in der localStorage ist sehr klein (da Sie sich auf die Erkennung von Transcients für das Ereignis "Cross Tab Message" verlassen), so dass es unwahrscheinlich ist, dass solche sensiblen Informationen auf der Festplatte des Benutzers verloren gehen.

Hier sehen Sie eine Demo dieses Konzepts: http://jsfiddle.net/oypdwxz7/2/

1voto

Amit Dwivedi Punkte 157

Es gibt keine solche die Art und Weise zu erkennen, Browser schließen, so wahrscheinlich können Sie nicht löschen localStorage auf Browser schließen, aber es gibt einen anderen Weg, um die Dinge zu behandeln, die Sie SessionCookies verwenden können, wie es nach Browser close.This zerstört wird, ist ich in meinem Projekt implementiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X