Skip to content

Instantly share code, notes, and snippets.

@jonathantneal
Created January 31, 2012 00:53
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonathantneal/1707909 to your computer and use it in GitHub Desktop.
Save jonathantneal/1707909 to your computer and use it in GitHub Desktop.
localStorage For Everybody
// localStorage For Everybody (but namely old ie)
!this.localStorage && ('addBehavior' in document.documentElement) && (this.localStorage = (function (glo) {
var localStorageElement = document.appendChild(document.createElement('x-local-storage'));
var localStorageKey = 'localStorage';
var localStorageDataPrefix = 'data-';
localStorageElement.addBehavior('#default#userData');
localStorageElement.load(localStorageKey);
var attrs = localStorageElement.getAttribute(localStorageKey) || '';
return {
getItem: function (key) {
key = escape(key);
return localStorageElement.getAttribute(localStorageDataPrefix + key);
},
setItem: function (key, value) {
key = escape(key);
localStorageElement.setAttribute(localStorageKey, attrs += ' ' + key + ' ');
localStorageElement.setAttribute(localStorageDataPrefix + key, value);
localStorageElement.save(localStorageKey);
},
removeItem: function (key) {
key = escape(key);
localStorageElement.setAttribute(localStorageKey, attrs = attrs.replace(' ' + key + ' ', ''));
localStorageElement.removeAttribute(localStorageDataPrefix + key);
localStorageElement.save(localStorageKey);
},
clear: function () {
localStorageElement.expires = (new Date()).toUTCString();
for (var a = localStorageElement.getAttribute(localStorageKey).split(' '), l = a.length, i = 0; i < l; ++i) {
localStorageElement.removeAttribute(localStorageDataPrefix + a[i]);
}
localStorageElement.save(localStorageKey);
return;
}
};
})(this));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment