2016-04-13 16 views
6

Ich habe ein Javascript, das nach einem Objekt in sessionStorage sucht und es benutzt, um ein Eingabefeld aufzufüllen. Ich nutze dies, um Nutzern auf meiner Website zu helfen, wenn sie das Formular nicht abgeschlossen haben und entweder weg navigieren oder versuchen, das Formular nach Ablauf ihrer Sitzung zu übermitteln.Wann ist SessionStorage tatsächlich gelöscht?

Mein Verständnis ist, dass SessionStorage nicht mit einer Server-Sitzung verknüpft ist, ist es mit dem Browser verknüpft, so dass unabhängig davon, ob ich eine neue Sitzung auf dem Server habe oder nicht ist irrelevance.

Dies wurde unterstützt, als ich dies vor ein paar Monaten zunächst getestet habe. Es scheint jedoch nicht mehr der Fall zu sein, und wenn ich meinen Sitzungscookie lösche und meine Seite neu lade, wird auch meine sessionStorage gelöscht. Dies verwendet sowohl Chrome als auch Firefox.

Ich möchte nicht localStorage verwenden, da dies zu Problemen mit freigegebenen Computern führen kann, während sessionStorage beim Schließen des Browserfensters gelöscht wird.

JS den Wert meiner gespeicherten Objekts

JSON.parse(sessionStorage.getItem("draftPost") || null); 

JS erhalten die Wertspeicher

$("#wallText").on("change",function(){ 
      sessionStorage.setItem("draftPost",JSON.stringify(draftPost)); 
     }); 
+0

Es wird hier im Detail erklärt: https://html.spec.whatwg.org/multipage/webstorage.html#the-sessionstorage-attribute – Barmar

+0

Und es ist hier kurz zusammengefasst: https://developer.mozilla.org/en -US/docs/Web/API/Window/sessionStorage – Barmar

+0

Von der letzten Seite: ** Das Öffnen einer Seite in einer neuen Registerkarte oder eines neuen Fensters bewirkt, dass eine neue Sitzung initiiert wird, die sich von der Funktionsweise der Sitzungscookies unterscheidet. ** – Barmar

Antwort

3

Etwas zu beachten mit Sessionstorage auf mobilen Safari.

Wie die mozila.org doc von timolawl bezeichnet erklärt:

Hinweis: seit iOS 5.1, Mobile Safari speichert localstorage Daten im Cache-Ordner, der zu gelegentlichen aufzuräumen unterliegt, auf Geheiß das Betriebssystem, typischerweise, wenn der Speicherplatz knapp ist.

Diese Säuberung findet nur allzu häufig auf mobilen Safari statt, und alle Sessionspeichervariablen werden für alle geöffneten Tabs zerstört.

Zum Beispiel sagen 5 Tabs öffnen, und dann eine neue Seite laden, die viel java und css hat, wird die Aufräumarbeiten verursachen, alle sessionstorage Variablen zu zerstören.

Die lokalen Speichervariablen bleiben jedoch erhalten.

Auch auf Safari, (glaube ich sowohl Desktop-und Mobile), in-private-Browsing wird verhindern, entweder LocalSpeicher oder SessionStorage.

Verwandte Themen