2012-11-08 15 views
15

Sto cercando di imparare come utilizzare l'oggetto js localStorage con il seguente codice.Perché non persistente localStorage in Chrome?

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
function saveStuff() { 
    sessionStorage.setItem('sessionKey', 'sessionValue'); 
    localStorage.setItem('localKey', 'localValue'); 
} 
</script> 
</head> 
<body> 
<button type="button" onclick="saveStuff()">Save</button> 
</body> 
</html> 

sono consapevole questo non sempre funziona con file: /// così sto usando mangusta per servire in su. Quando faccio clic sul pulsante Salva, i risultati mi sembrano corretti nella console JavaScript di Chrome. Tuttavia, quando premo refresh, l'archiviazione locale e di sessione viene cancellata dove mi aspettavo che il valore di archiviazione locale continuasse. Ciò accade sia su http://127.0.0.1/ e http://localhost/.

Qualcuno sa perché questo potrebbe accadere? In Impostazioni, Impostazioni contenuti, ho selezionato "Consenti ai dati locali di essere impostati (consigliato)" e non selezionato "Blocca cookie di terze parti e dati del sito". Mi sto perdendo qualcosa nel mio codice?

(Chrome versione 23.0.1271.64 m)

+0

Questo violino funziona? http://jsfiddle.net/6bvjD/ Quando si fa clic su "salva" e quindi si ricarica la pagina, ottengo i valori memorizzati. – pimvdb

+0

Bene wtf. Sì, lo fa. Il che implica che per mantenere i valori salvati debba esserci un tentativo di leggerlo? Non ha senso per me. –

+0

Sei * sicuro * che non stai in alcun modo chiamando 'localStorage.clear()' o 'localStorage.removeItem'? – pimvdb

risposta

11

Ok. Grazie deve andare a pimvdb su questo ma ecco la soluzione.

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 
function saveStuff() { 
    sessionStorage.setItem('sessionKey', 'sessionValue'); 
    localStorage.setItem('localKey', 'localValue'); 
} 
localStorage.getItem('localKey'); 
sessionStorage.getItem('sessionKey'); 
</script> 
</head> 
<body> 
<button type="button" onclick="saveStuff()">Save</button> 
</body> 
</html> 

Il riepilogo sembra essere che è necessario tentare una lettura della chiave per mantenerla.

Conclusione: WTF.

+0

Presumo che questo sia un bug. Sollevata [# 160056] (http://code.google.com/p/chromium/issues/detail?id=160056). –

+1

Sembra un errore in DevTools. La voce di archiviazione non viene mostrata nel pannello Risorse finché non si accede effettivamente a 'localStorage' oa qualsiasi proprietà. Se esegui semplicemente 'localStorage; 'al caricamento della pagina, DevTools funziona correttamente. – pimvdb

+1

Sto mostrando il valore nel file console.log, ma non continua a persistere. (Chrome) –

8

<!-- Necro post I know, but maybe it helps someone else -->

non riuscivo a capire perché non riuscivo a vedere qualcosa nei miei localStorage in strumenti di sviluppo, ma vedevo nella console durante la digitazione localStorage. Bene, se memorizzi qualcosa con Dev Tools aperto, non vedrai Application -> Local Storage avere qualcosa elencato per il tuo host. Quando ho chiuso/riaperto Dev Tools, ho potuto vedere i miei dati.

Quindi, in conclusione, chiudere/riaprire Dev Tools.

+1

State tirando i capelli per le ultime 3 ore cercando di capirlo. La tua soluzione ha funzionato. Grazie. –

+0

Il mio lavoro qui è finito. – cmeza

Problemi correlati