2013-10-24 10 views
5

Używam API localStorage html5.catch QUOTA_EXCEEDED_ERR na localStorage

Chcę złapać QUOTA_EXCEEDED_ERR, dzięki czemu mogę pokazać użytkownikowi komunikat "Pamięć jest pełna, nie można zapisać. Może usunąć kilka elementów?"

Kod że użyję jest jak

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?") 
     } 
    } 
} 

Chcę cię zapytać, czy to jest ok? Czy to działa dobrze dla wszystkich przeglądarek? Czy tak czy inaczej zadziała, czy nie?

Oczywiście testuję też, ale pomyślałem, że powinienem zapytać tak czy owak, ponieważ może czegoś brakuje.

Odpowiedz

5

e.name za przekroczenie limitu kwoty nie zawsze musi być "QUOTA_EXCEEDED_ERR" w każdej przeglądarce.

Może być "NS_ERROR_DOM_QUOTA_REACHED" w niektórych wersjach FF http://chrisberkhout.com/blog/localstorage-errors/

Może być "QuotaExceededError" lub "W3CException_DOM_QUOTA_EXCEEDED_ERR" zależności od wersji przeglądarki IE/trybie http://msdn.microsoft.com/en-us/library/ie/cc197050(v=vs.85).aspx

Jednak nadal połowu błąd. W najgorszym przypadku użytkownik otrzyma komunikat "Coś poszło nie tak?" alert a alarm "Pamięć jest pełna".