Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 错误处理“;“内存不足异常”;在浏览器中?_Javascript_Html_Angularjs_Google Chrome_Firefox - Fatal编程技术网

Javascript 错误处理“;“内存不足异常”;在浏览器中?

Javascript 错误处理“;“内存不足异常”;在浏览器中?,javascript,html,angularjs,google-chrome,firefox,Javascript,Html,Angularjs,Google Chrome,Firefox,我正在调试一个使用大量内存的javascript/html5 web应用程序。偶尔我会在控制台窗口中收到一条错误消息 "uncaught exception: out of memory". 我有没有办法在应用程序中优雅地处理这个错误 最终,我需要重新编写部分内容,以防止这种情况发生。您应该计算本地存储的大小, window.localStorage已满 作为一种解决办法,就是尝试添加一些内容 var localStorageSpace = function(){ var allS

我正在调试一个使用大量内存的javascript/html5 web应用程序。偶尔我会在控制台窗口中收到一条错误消息

"uncaught exception: out of memory".  
我有没有办法在应用程序中优雅地处理这个错误


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

您应该计算本地存储的大小, 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;
}

在Firefox中也遇到了同样的问题,后来我意识到,即使在将一些数据设置到if循环中的本地存储之前,我也在尝试重新加载HTML页面。所以你需要注意这一点,还要检查ID是否重复


但同样的事情在Chrome上也很有效。也许Chrome更智能。

我最近在处理一个包含大量JS的项目并发送Json时也收到了同样的错误消息,但我找到的解决方案是将input type=“submit”属性更新为input type=“button”。我知道使用input type=“button”。>会有一些限制,而且这个解决方案看起来很奇怪,但是如果你的应用程序有带有Json数据的ajax,你可以试试。谢谢。

FYI,有一个有用的扩展可以帮助解决调试性能问题。你能给我看一下你的代码吗?我稍后会对此进行演示,如果有帮助,请标记为correct。谢谢在ajax调用的情况下,我只是将input type=“submit”更改为input type=“button”,并为我工作