2013-10-24 26 views
5

我使用的是html5的localStorage API。在localStorage上捕获QUOTA_EXCEEDED_ERR

我想赶上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?") 
     } 
    } 
} 

我要问你,这样行吗?这项工作对所有浏览器都适用吗?无论如何,将工作正常或休息?

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

回答

5

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

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

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

但是,你仍然捕捉错误。那么最坏的情况是用户会得到“出错了?”警报与“内存已满”警报。