我试图为Iphone使用HTML5 (localStorage)中可用的客户端存储,我完全了解与localStorage相关的“配额”(目前为5MB)。
现在问题在于我的应用程序(以前没有数据存储)。试图将数据存储在QUOTA_EXCEEDED_ERR中是localStorage的结果,尽管总体数据的大小小于5MB(精确地说,~ 4Kb (使用普通浏览器中的铬web检查器))
有人能分享一些关于数据重为4Kb的信息是如何在相同的QUOTA_EXCEEDED_ERR 5 5MB的上限下产生的吗?
请注意,问题仅发生在 iPhone,所有浏览器,甚至iPhone模拟器都没有提示QUOTA_EXCEEDED_ERR错误
iPhone目前是图片是iPhone 4。
发布于 2012-02-16 21:29:33
进入Settings->Safari并检查是否打开了私有浏览。如果是的话,本地存储将无法存储任何东西。下面是检查本地存储的一些基本代码:
if (!!window.localStorage)
{
localStorage.setItem(key, val);
};还有,你是怎么设置的?你是在使用localStorage.setItem(key, val),还是在尝试localStorage(key, val)?你的问题可能是因为设置的不正确
发布于 2012-10-19 14:59:17
我也遇到了同样的问题,JoeCortopassi只是部分正确:它是由启用了私人浏览引起的。不过,答案中提供的代码没有多大帮助。当我在iPad Safari(ios5)上测试时
console.log(!!window.localStorage); // true一旦我试图设置一个值,我就会得到一个例外:
localStorage.setItem("test", "test") // Exception 22 is thrown因此,要准确测试本地存储支持,必须尝试在本地存储中设置值,例如:
var localStorageSupported = function() {
try {
localStorage.setItem("test", "test");
localStorage.removeItem("test");
return true;
} catch(e){
return false;
}
}发布于 2013-03-15 16:03:35
事实是,在Safari上使用iOS <6的私有浏览模式并不会空window.localStorage和window.sessionStorage,因此只检查!!window.localStorage或!!window.sessionStorage是不够的,您从这些组件中调用的任何内容都将失败,引发这个window.localStorage错误。
在这些平台上,私有模式似乎将配额设置为零。这就是为什么,要真正测试这些特性,就像现代派一样,您必须将其封装在try...catch语句中。
现代派代码:
var mod = 'modernizr';
/*...*/
tests['localstorage'] = function() {
try {
localStorage.setItem(mod, mod);
localStorage.removeItem(mod);
return true;
} catch(e) {
return false;
}
};我们必须信任web,但要非常小心。
https://stackoverflow.com/questions/9077101
复制相似问题