在本地存储上捕获QUOTA_EXCEEDED_ERR

catch QUOTA_EXCEEDED_ERR on localStorage

本文关键字:QUOTA EXCEEDED ERR 存储      更新时间:2023-09-26

我正在使用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?")
        }
    }
}

我想问你,可以吗?这适用于所有浏览器吗?无论如何,工作正常还是会损坏?

当然我也在测试它,但我想无论如何我都应该问,因为也许我错过了一些东西。

配额

超出错误的e.name不一定总是在每个浏览器中"QUOTA_EXCEEDED_ERR"

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

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

但是,您仍然捕获错误。因此,最坏的情况是用户将收到"出了点问题?"警报,而不是"内存已满"警报。

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