Created
April 18, 2011 23:19
-
-
Save juliocesar/926500 to your computer and use it in GitHub Desktop.
This is the best localStorage polyfill in the world
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// I mean, seriously, localStorage is supported even by your mum. How about instead of | |
// casing the feature out, you give users in-memory (stale) storage instead? | |
// If they close your application, they deserve to lose data anyway. | |
// if (!('localStorage' in window)) { | |
if (!Modernizr.localstorage) { | |
window.localStorage = { | |
_data : {}, | |
setItem : function(id, val) { return this._data[id] = String(val); }, | |
getItem : function(id) { return this._data.hasOwnProperty(id) ? this._data[id] : undefined; }, | |
removeItem : function(id) { return delete this._data[id]; }, | |
clear : function() { return this._data = {}; } | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
For those that want to "polyfill" the localStorage object due to it being blocked by an error like this:
DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.
(usually due to an embedded frame when your site is used in incognito), you'll need to usedefineProperty
. For example, here's a super minimal polyfill that doesn't allow usage likelocalStorage.setItem("key", value)
, but does allowlocalStorage.key=value
: