这是我的代码:
if(typeof(Storage)!==undefined) {
// Web storage support
if(localStorage.hashes != "") {
var hashes = jQuery.parseJSON(localStorage.hashes);
for (var i = 0; i < hashes.length; i++) {
// Do stuff here
}
}
else {
var hashes = [];
}
}
else {
// No web storage support
}
我真的不知道发生了什么,但是当我第一次尝试从设备加载带有此代码的页面时,我的其余代码将无法正常工作。但是,如果我发表评论,那么第一次访问该页面一切正常。然后,我可以取消注释,重新加载页面,一切都将继续工作。这是我能描述正在发生的事情的最佳方式。
答案 0 :(得分:0)
我相信你可以在发布之前做一些调试。
您是否尝试过记录/添加检查(以查看此问题的确切来源以及错误是什么)?
但是既然我们在这里,这里是我对localStorage的提示:
if(Modernizr.localstorage){ /* Your code */}
function get(key) { if(Modernizr.localstorage) { if(localStorage[key] != null) { return localStorage[key]; } } return null; } function set(key, value) { if(Modernizr.localstorage) { localStorage[key] = value; } return null; }
这非常粗糙,你调整它以使其更安全并满足您的需求
答案 1 :(得分:0)
我明白了!因此,在上面的代码中,我检查他们是否有localStorage可用,如果他们这样做,我只是假设他们有一些存储在那里的哈希。这显然会在他们第一次访问时产生问题,因为他们还没有保存任何哈希值。所以我必须检查它们是否有,如果有,则执行for循环,否则只需将其设置为空数组。像这样!
if(typeof(Storage) !== "undefined") {
// Web storage support
if(localStorage.hashes != "") {
hashes = JSON.parse(localStorage.getItem("hashes"));
if(hashes) {
for (var i = 0; i < hashes.length; i++) {
// Do Stuff
}
} else {
hashes = [];
}
}
else {
hashes = [];
}
}
else {
// No web storage support
hashes = [];
}
感谢jbabey提供有关清理我的代码的提示!