如何快速将 JavaScript localStorage 填充到最大容量?

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 快速填充到其最大容量,以便我可以在不同的条件和浏览器中测试代码。

Ara*_*oft 5

感谢@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:我相信这段代码可以更优化。任何优化都受到高度赞赏。