2012-11-08 35 views
15

Próbuję dowiedzieć się, jak korzystać z obiektu localStorage js z następującego kodu.Dlaczego localStorage nie działa w przeglądarce 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> 

Jestem świadomy tego nie zawsze działa z file: /// więc używam mangusty, aby go ugościć. Kiedy klikam przycisk zapamiętywania, wyniki są dla mnie poprawne w konsoli JavaScript Chrome. Jednak po naciśnięciu odświeżania magazyn lokalny i sesyjny zostaną wyczyszczone, gdy spodziewam się, że lokalna wartość magazynu pozostanie. Dzieje się tak zarówno na http://127.0.0.1/ i http://localhost/.

Czy ktoś wie, dlaczego tak się dzieje? W Ustawieniach, Ustawienia zawartości Wybrałem opcję "Pozwól na ustawienie (zalecane) danych lokalnych" i usuń zaznaczenie opcji "Blokuj pliki cookie i dane witryn innych firm". Czy brakuje mi czegoś w moim kodzie?

(Wersja Chrome 23.0.1271,64 m)

+0

Czy to skrzypce działa? http://jsfiddle.net/6bvjD/ Po kliknięciu "zapisz", a następnie załadowaniu strony, otrzymuję zapisane wartości. – pimvdb

+0

Dobrze wtf. Tak. Co implikuje, że zapisane wartości mają się utrzymywać, musi być próba ich odczytania? To nie ma dla mnie sensu. –

+0

Czy jesteś pewien, że w żaden sposób nie nazywasz 'localStorage.clear()' lub 'localStorage.removeItem'? – pimvdb

Odpowiedz

11

Ok. Dzięki temu musi przejść do pimvdb, ale tutaj jest rozwiązanie.

<!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> 

Podsumowanie wydaje się, że należy spróbować odczytać klucz, aby go utrzymać.

Wniosek: WTF.

+0

Zakładam, że to błąd. Wychowany [# 160056] (http://code.google.com/p/chromium/issues/detail?id=160056). –

+1

To wygląda jak błąd w DevTools. Pozycja przechowywania nie jest wyświetlana w panelu Zasoby, dopóki nie uzyskasz dostępu do 'localStorage' lub jakiejkolwiek właściwości. Jeśli po prostu uruchomisz 'localStorage;' przy ładowaniu strony, DevTools działa poprawnie. – pimvdb

+1

Wyświetlana jest wartość w pliku console.log, ale nadal nie jest trwała. (Chrome) –

8

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

nie mogłem zrozumieć, dlaczego nie mogłem zobaczyć coś w moich localStorage w Dev Tools, ale widział go w konsoli po wpisaniu localStorage. Cóż, jeśli będziesz przechowywać coś z Dev Tools, nie zobaczysz, że masz jakieś dane dla swojego hosta. Kiedy zamknąłem/ponownie otworzyłem Dev Tools, mogłem zobaczyć moje dane.

Podsumowując, zamknij/otwórz ponownie Dev Tools.

+1

Wyciągałam włosy przez ostatnie 3 godziny, próbując to zrozumieć. Twoje rozwiązanie zadziałało. Dziękuję Ci. –

+0

Moja praca została zakończona. – cmeza

Powiązane problemy