我正在调试一个使用大量内存的javascript/html5 web应用程序。有时,我会在控制台窗口中收到一条错误消息
"uncaught exception: out of memory".
有没有办法让我在应用程序内部优雅地处理这个错误?
最终,我需要重写其中的一部分,以防止这种情况首先发生。
发布于 2015-03-11 20:51:28
你应该计算一下你的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;
}
发布于 2015-07-28 16:28:10
我最近也收到了同样的错误消息,当我在一个有很多JS和发送Json的项目上工作时,我发现的解决方案是将输入按钮“type=”属性更新为输入按钮“type=”。我知道使用input type="button"..>有一些限制,而且解决方案看起来很奇怪,但是如果您的应用程序使用带有JS、Json数据的ajax,您可以试一试。谢谢。
发布于 2015-06-18 14:53:45
在Firefox中也遇到了同样的问题,但后来我才知道,甚至在if循环中将一些数据设置到本地存储中之前,我也在尝试重新加载HTML页面。所以你需要注意这一点,同时还要检查ID是否重复。
但同样的事情在Chrome上也运行得很好。也许Chrome更智能。
https://stackoverflow.com/questions/25903625
复制相似问题