你能捕到JavaScript中的内存不足错误吗?

Tyl*_*son 7 javascript memory mobile caching

我正在构建一个依赖于缓存的移动Web应用程序.如果我的缓存使用了大量内存我在移动Safari中看到此消息...

"此网页出现问题,因此重新加载".

如果没有干预,页面将重新加载并重复执行相同的操作几次,直到它放弃为止.

是否有我可以捕获的事件,我可以监控的堆信息或我可以更改的设置,以构建比强制页面重新加载更具弹性的缓存系统?

Chrome有,window.performace.memory但我似乎无法找到任何与在移动Safari中解决我的问题相关的内容.Try/catch语句和onBeforeUnload事件不会阻止页面加载或提供清除/减少缓存的机会.

Bas*_*wer 1

这有帮助吗?

在浏览器中处理“内存不足异常”时出错?

var localStorageSpace = function(){
var allStrings = '';
for(var key in window.localStorage){
    if(window.localStorage.hasOwnProperty(key)){
        allStrings += window.localStorage[key];
    }
}
return allStrings ? 3 + ((allStrings.length*16)/(8*1024)) + ' KB' : 'Empty (0 KB)';
};

var storageIsFull = function () {
var size = localStorageSpace(); // old size

// try to add data
var er;
try {
     window.localStorage.setItem("test-size", "1");
} catch(er) {}

// check if data added
var isFull = (size === localStorageSpace());
window.localStorage.removeItem("test-size");

return isFull;
Run Code Online (Sandbox Code Playgroud)

}