错误处理"内存异常"在浏览器?

时间:2014-09-18 03:18:16

标签: javascript html5 angularjs google-chrome firefox

我正在调试一个使用大量内存的javascript / html5网络应用。有时我在控制台窗口中收到错误消息

"uncaught exception: out of memory".  

我有办法优雅地在应用程序中处理此错误吗?

最终我需要重新编写部分内容以防止这种情况发生。

3 个答案:

答案 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更智能。