Sto lavorando a un deck building application per un gioco di carte che gioco. Sto usando localStorage per salvare e recuperare i deck. Sembra funzionare perfettamente in Chrome, ma in Firefox funziona in modo inaffidabile.localStorage inaffidabile in Firefox
In FF, tutto sembra funzionare bene in un primo momento, il ponte persiste anche attraverso una ricarica. Tuttavia, se aggiungo un secondo mazzo e ricarico, trova solo il primo mazzo. Se cancello il primo mazzo, non trova più nulla.
Tutta l'interazione di archiviazione locale è in script/vault.js, che riprodurrò di seguito. Sto facendo qualcosa di sbagliato?
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);
};
In sostanza, sembra che ad un certo punto le chiavi in localStorage vengono 'congelate' per mancanza di un termine migliore; localStorage si comporterà correttamente mentre lo manipolo, ma appena aggiorno la pagina sembra tornare a qualsiasi stato in cui è stato congelato.
Puoi fare una demo di http://jsfiddle.net? –
Ho pubblicato un collegamento all'applicazione stessa nel mio primo post. Eccolo di nuovo: http://asmor.com/anr/ – Asmor
Beh, se si tratta di un violino, potrei lavorare con il codice e controllare cose diverse. Non è necessario, ma renderebbe più probabile me stesso e alcuni altri armeggiare con esso per vedere se riusciamo a capirlo. –