2016-04-13 18 views
6

Ho un javascript che controlla un oggetto in sessionStorage e lo utilizza per riempire un campo di input. Io lo uso per aiutare gli utenti del mio sito se lasciano il modulo incompiuto e si allontanano o cercano di inviare il modulo dopo che la sessione è scaduta.Quando sessionStorage viene effettivamente cancellato?

La mia comprensione è che sessionStorage NON è collegato a una sessione del server, è collegato al browser, quindi se ho una nuova sessione sul server o no è irrilevante.

Questo è stato supportato quando ho provato questo inizialmente alcuni mesi fa. Tuttavia, sembra che non sia più così, e quando svuoto il mio cookie di sessione e ricarico la mia pagina, anche il mio sessionStorage viene cancellato. Questo sta usando sia Chrome che Firefox.

Non voglio utilizzare localStorage in quanto ciò potrebbe causare problemi con computer condivisi, mentre sessionStorage verrà cancellato quando le finestre del browser saranno chiuse.

JS per ottenere il valore del mio oggetto memorizzato

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

JS per salvare il valore

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

È spiegato in dettaglio qui: https://html.spec.whatwg.org/multipage/webstorage.html#the-sessionstorage-attribute – Barmar

+0

ed è riassunto brevemente qui: https://developer.mozilla.org/en -US/docs/Web/API/Window/sessionStorage – Barmar

+0

Da quest'ultima pagina: ** L'apertura di una pagina in una nuova scheda o finestra causerà l'avvio di una nuova sessione, diversa da come funzionano i cookie di sessione. ** – Barmar

risposta

3

Qualcosa da tenere a mente con sessionstorage su mobile safari.

Come dichiarato dal doc mozila.org cui si riferisce timolawl:

Nota: dal momento che iOS 5.1, negozi Safari Mobile localStorage dati nella cartella di cache, che è soggetto a occasionali ripulire, per volere di il sistema operativo, in genere se lo spazio è breve.

Questo clean-up avviene troppo spesso su mobile safari, e tutte le variabili sessionstorage vengono distrutte per tutte le schede aperte.

Ad esempio, se si dice 5 schede aperte e quindi si carica una nuova pagina che ha un sacco di java e css, si verificherà la pulizia, distruggendo tutte le variabili di sessionestoria.

Tuttavia, le variabili di memorizzazione locali vengono mantenute.

Inoltre, in Safari, (credo sia sul desktop che sul cellulare), la navigazione in privato impedirà l'utilizzo di localstorage o sessionstorage.

Problemi correlati