【问题标题】:catch QUOTA_EXCEEDED_ERR on localStorage在 localStorage 上捕获 QUOTA_EXCEEDED_ERR
【发布时间】:2013-11-03 16:38:54
【问题描述】:

我正在使用 html5 的 localStorage API。

我想捕捉QUOTA_EXCEEDED_ERR,这样我就可以向用户显示一条消息,例如“内存已满。无法保存。也许删除一些项目?”

我将使用的代码是这样的

function save() {
    try {
        localStorage.setItem(key, name);
    } catch (e) {
        if (e.name === 'QUOTA_EXCEEDED_ERR') {
            alert("Memory is full. Cannot save. Maybe delete a few items?");
        } else {
            alert("Something went wrong? Try again later?")
        }
    }
}

我想问你,这样可以吗?这适用于所有浏览器吗?会正常工作还是坏掉?

当然我也在测试它,但我想我还是应该问一下,因为也许我错过了一些东西。

【问题讨论】:

    标签: javascript html error-handling local-storage


    【解决方案1】:

    e.name 对于超出配额的错误不一定在每个浏览器中都是"QUOTA_EXCEEDED_ERR"

    在某些版本的FF中可能是"NS_ERROR_DOM_QUOTA_REACHED"http://chrisberkhout.com/blog/localstorage-errors/

    可能是 "QuotaExceededError""W3CException_DOM_QUOTA_EXCEEDED_ERR" 取决于 IE 浏览器版本/模式 http://msdn.microsoft.com/en-us/library/ie/cc197050(v=vs.85).aspx

    但是,您仍然发现错误。所以最坏的情况是用户会得到“出了什么问题?”警报与“内存已满”警报。

    【讨论】:

      【解决方案2】:

      您最好使用“磁盘存储”而不是“内存”,因为它更清晰。 “内存”通常代表 RAM,而不是持久存储

      【讨论】:

        猜你喜欢
        • 2014-04-20
        • 2012-02-23
        • 2011-02-05
        • 1970-01-01
        • 2013-09-21
        • 1970-01-01
        • 2011-08-05
        • 2015-08-27
        相关资源
        最近更新 更多