Vir*_*ren 20 iphone html5 local-storage ios
我尝试在HTML5(localStorage)中使用Client Side Storage for Iphone Application,我完全知道localStorage(目前是5MB)的" QUOTA " .
现在的问题是我的应用程序(以前没有存储数据).尝试将数据存储在localStorage中导致QUOTA_EXCEEDED_ERR,尽管整体数据的大小小于5 MB(精确到~4.5b(在普通浏览器中使用chrome web inspector找到))
任何人都可以分享一下这个数据如何称重4Kb导致QUOTA_EXCEEDED_ERR当相同5MB的上限时
请注意,问题仅发生在iPhone上,所有浏览器甚至iPhone模拟器都没有提示QUOTA_EXCEEDED_ERR错误
iPhone目前的图片是iPhone 4.
Joe*_*ssi 28
进入设置 - > Safari并检查隐私浏览是否已打开.如果是,本地存储将无法存储任何内容.以下是为您检查本地存储的一些基本代码:
if (!!window.localStorage)
{
localStorage.setItem(key, val);
};
Run Code Online (Sandbox Code Playgroud)
另外,你是如何设置它的?你在用localStorage.setItem(key, val)还是在尝试localStorage(key, val)?你的问题可能来自于错误设置
wos*_*sis 19
我有同样的问题,JoeCortopassi只是部分正确:它是由启用私人浏览引起的.该答案中提供的代码虽然没有多大帮助.当我在iPad Safari(ios5)上测试时,我得到了
console.log(!!window.localStorage); // true
Run Code Online (Sandbox Code Playgroud)
一旦我尝试设置一个值,我就会得到一个例外:
localStorage.setItem("test", "test") // Exception 22 is thrown
Run Code Online (Sandbox Code Playgroud)
因此,要准确测试本地存储支持,必须尝试在本地存储中设置值,例如:
var localStorageSupported = function() {
try {
localStorage.setItem("test", "test");
localStorage.removeItem("test");
return true;
} catch(e){
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
事实上,在Safari for iOS <6上使用隐私浏览模式不会清空window.localStorage,window.sessionStorage因此检查!!window.localStorage或!!window.sessionStorage不够,并且从这些组件调用的任何内容都将失败,抛出此QUOTA_EXCEEDED_ERR错误.
在这些平台上,私有模式似乎将配额设置为零.这就是为什么要真正测试这些功能,就像Modernizr所做的那样,你必须将它包装在try ... catch语句中.
Modernizr代码:
var mod = 'modernizr';
/*...*/
tests['localstorage'] = function() {
try {
localStorage.setItem(mod, mod);
localStorage.removeItem(mod);
return true;
} catch(e) {
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
我们必须信任Web API,但要非常谨慎.
| 归档时间: |
|
| 查看次数: |
19806 次 |
| 最近记录: |