A timeline of the last four years of detecting good old window.localStorage.
October 2009: 5059daa
(typeof window.localStorage != 'undefined')November 2009: 15020e7
!!window.localStorageDecember 2009: 1e0ba91
!!('localStorage' in window)January 2010: d8947c9
(localStorage in window) && window[localStorage] !== nullJuly 2010: ef2c47
try {
return ('localStorage' in window) && window[localstorage] !== null;
} catch(e) {
return false;
}December 2010: c630c39
try {
return !!localStorage.getItem;
} catch(e) {
return false;
}October 2011: 5e2fa0e
try {
return !!localStorage.getItem('getItem');
} catch(e) {
return false;
}October 2011: a93625c
try {
localStorage.setItem(mod, mod);
localStorage.removeItem(mod);
return true;
} catch(e) {
return false;
}
@Download The modified
catchblock will stillreturn falseexcept when the caught error happens to be "over quota error" (which is checked in four different ways), which means that the storage system is actually available, but just exhausted, and thus the (arguably) correct answer is stilltrue