Ara*_*oft 3 javascript browser local-storage
我有一个经常使用localStorage的应用程序。有时我会达到 localStorage 的最大容量,然后我会捕获异常并清理一些旧数据。
try {
localStorage.setItem(myKey, myData);
}catch(error){
// empty some old data in localStorage and re-insert myKey and myData
}
Run Code Online (Sandbox Code Playgroud)
一切都很好,只是我无法轻松测试。我正在寻找一种方法将我的 localStorage 快速填充到其最大容量,以便我可以在不同的条件和浏览器中测试代码。
感谢@Daniel H
回答让我知道如何快速填充 localStorage。最后我来到了这个解决方案:
try{
var i;
for (i = 1 ; i <= 10000; i ++) {
localStorage.setItem('test', new Array(i * 100000).join('a'));
}
}catch(error){
console.log("test stopped at i: " + i);
try{
var j;
for (j = 1 ; j <= 100; j++) {
localStorage.setItem('test2', new Array(j * 1000).join('a'));
}
}catch(error){
console.log("test2 stopped at j: " + j);
try{
var k;
for (k = 1 ; k <= 1000; k++) {
localStorage.setItem('test3', new Array(k).join('a'));
}
}catch(error){
console.log("test3 stopped at k: " + k);
console.log("total storage: " + (i * 100000 + j * 1000 + k));
}
}
}
Run Code Online (Sandbox Code Playgroud)
起初,我以 100000 个字符的块填充 localStorage,并将其作为“test”存储在 localStorage 中。在超出配额异常后,我以 1000 个字符的块填充 localStorage,直到再次超出配额异常。最后,我逐个字符地填充 localStorage,直到第三次出现异常。
现在 localStorage 已经满了,我们可以像这样添加 1 个字符来测试它:
localStorage.setItem("a","a")
Run Code Online (Sandbox Code Playgroud)
哪个抛出exceeded the quota
异常。
PS:我相信这段代码可以更优化。任何优化都受到高度赞赏。
归档时间: |
|
查看次数: |
1590 次 |
最近记录: |