2013-10-24 30 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

但是,你仍然捕捉錯誤。那麼最壞的情況是用戶會得到「出錯了?」警報與「內存已滿」警報。