Pracuję nad deck building application dla gry karcianej, w którą gram. Używam localStorage do zapisywania i pobierania talii. Wygląda na to, że działa bezbłędnie w Chrome, ale w przeglądarce Firefox działa niewiarygodnie.localStorage niewiarygodne w przeglądarce Firefox
W pierwszej kolejności wszystko wydaje się działać dobrze, a nawet w przypadku ponownego załadowania. Jeśli jednak dodaję drugą talię i przeładuję, ona znajdzie tylko pierwszą talię. Jeśli usuniemy pierwszą talię, nie znajdzie ona już niczego.
Cała lokalna interakcja z pamięcią masową znajduje się w skryptach/vault.js, którą będę odtworzyć poniżej. czy robię coś źle?
vault = {};
vault.makeKey = function (s) {
return "deck:" + s;
};
vault.friendlyName = function(s) {
if (s.indexOf("deck:") === 0) {
return s.substring(5);
} else {
return s;
}
};
vault.store = function (deck, name) {
if (!window.localStorage) {
alert("This browser doesn't support local storage. You will be unable to save decks.");
return;
}
var key = vault.makeKey(name);
localStorage.setItem(key, deck.export());
};
vault.retrieve = function (key) {
deck.import(localStorage[key]);
};
vault.getDecks = function() {
var keys = Object.keys(localStorage),
out = [],
i,
k,
name = "";
for (i = 0; i < keys.length; i++) {
k = keys[i];
name = vault.friendlyName(k);
if (name !== k && localStorage[k]) {
out.push({name: name, key: k});
}
}
out.sort(function (a, b) {
return a.name > b.name ? 1 : -1;
});
return out;
};
vault.deleteDeck = function (key) {
localStorage.removeItem(key);
};
Zasadniczo wydaje się, że w pewnym momencie klucze w localStorage stają się "zamrożone" z powodu braku lepszego terminu; localStorage zachowa się poprawnie podczas manipulowania nim, ale zaraz po odświeżeniu strony wydaje się, że powraca do stanu, w którym został zamrożony.
Czy można utworzyć demo http://jsfiddle.net? –
Umieściłem link do samej aplikacji w moim pierwszym poście. Tutaj znowu: http://asmor.com/anr/ – Asmor
Cóż, jeśli jest w skrzypcach, mógłbym pracować z kodem i sprawdzać różne rzeczy. Nie jest to konieczne, ale sprawiłoby, że stałoby się to bardziej prawdopodobne, a inni by z nim majstrowali, aby sprawdzić, czy uda nam się go rozwiązać. –