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;
}