나는 내가 플레이하는 카드 게임에 대해 deck building application에서 일하고 있습니다. 저는 localStorage를 사용하여 데크를 저장하고 검색합니다. Chrome에서 완벽하게 작동하는 것으로 보이지만 Firefox에서는 신뢰성이 떨어집니다.Firefox에서 신뢰할 수없는 localStorage
FF에서는 처음에는 모든 것이 정상적으로 작동하는 것으로 보입니다. 갑판은 재 장전까지 지속됩니다. 그러나 두 번째 데크를 추가하고 다시로드하면 첫 번째 데크 만 찾습니다. 첫 번째 덱을 삭제하면 더 이상 아무것도 찾을 수 없습니다.
모든 로컬 저장소 상호 작용은 scripts/vault.js에 있으며, 아래에서 재현합니다. 내가 뭔가 잘못하고 있는거야?
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);
};
기본적으로 localStorage의 키가 더 나은 용어가 부족하여 '고정'되는 것처럼 보입니다. localStorage는 조작하는 동안 올바르게 동작하지만 페이지가 새로 고쳐지면 고정 된 상태로 되돌아가는 것처럼 보입니다.
http://jsfiddle.net 데모를 만들 수 있습니까? –
첫 번째 게시물에 응용 프로그램 자체에 대한 링크를 게시했습니다. 여기 다시 있습니다 : http://asmor.com/anr/ – Asmor
글쎄, 그것이 피들에 있다면, 나는 코드로 작업하고 다른 것들을 점검 할 수 있습니다. 필요하지는 않지만 자신을 만들 가능성이 높아지고 다른 사람들도 우리가 알아낼 수 있는지 알아보기 위해 그 도구를 고칠 것입니다. –