繁体   English   中英

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

[英]Error handling "Out of Memory Exception" in browser?

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

"uncaught exception: out of memory".  

有没有办法让我在应用程序内优雅地处理这个错误?

最终,我需要重写其中的一部分,以防止这种情况发生。

您应该计算 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;
}

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

在 Firefox 中遇到了同样的问题,后来我才知道我试图重新加载 HTML 页面,甚至在将一些数据设置到 if 循环内的本地存储之前。 所以你需要照顾那个,并检查某个地方的 ID 是否重复。

但同样的事情在 Chrome 中运行良好。 也许 Chrome 更智能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM