我正在调试一个使用大量内存的javascript / html5网络应用。有时我在控制台窗口中收到错误消息
"uncaught exception: out of memory".
我有办法优雅地在应用程序中处理此错误吗?
最终我需要重新编写部分内容以防止这种情况发生。
答案 0 :(得分:5)
您应该计算localStorage的大小, window.localStorage已满
作为一种解决方案是尝试添加一些东西
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;
}
答案 1 :(得分:4)
我最近在处理有大量JS并发送Json的项目时也得到了相同的错误消息,但我找到的解决方案是将input type =“submit”属性更新为input type =“button”。我知道使用input type =“button”有限制。>并且解决方案看起来很奇怪,但如果你的应用程序有JS,Json数据的ajax,你可以尝试一下。感谢。
答案 2 :(得分:1)
在Firefox中遇到同样的问题后来我才知道我甚至在将一些数据设置到if-loop内的本地存储之前尝试重新加载HTML页面。所以你需要照顾那个,并检查ID重复与否的地方。
但同样的事情在Chrome中运行良好。也许Chrome更智能。