A timeline of the last four years of detecting good old window.localStorage
.
October 2009: 5059daa
(typeof window.localStorage != 'undefined')
November 2009: 15020e7
!!window.localStorage
December 2009: 1e0ba91
!!('localStorage' in window)
January 2010: d8947c9
(localStorage in window) && window[localStorage] !== null
July 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
catch
block will stillreturn false
except 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