sashomaga

Local&Sesion storage shiv

May 10th, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. if (typeof window.localStorage == 'undefined' || typeof window.sessionStorage == 'undefined') (function () {
  2.  
  3.     var Storage = function (type) {
  4.         function createCookie(name, value, days) {
  5.             var date;
  6.             var expires;
  7.  
  8.             if (days) {
  9.                 date = new Date();
  10.                 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
  11.                 expires = "; expires=" + date.toGMTString();
  12.             } else {
  13.                 expires = "";
  14.             }
  15.             document.cookie = name + "=" + value + expires + "; path=/";
  16.         }
  17.  
  18.         function readCookie(name) {
  19.             var nameEQ = name + "=";
  20.             var ca = document.cookie.split(';');            
  21.  
  22.             for (var i = 0; i < ca.length; i++) {
  23.                 var c = ca[i];
  24.                 while (c.charAt(0) == ' ') {
  25.                     c = c.substring(1, c.length);
  26.                 }
  27.  
  28.                 if (c.indexOf(nameEQ) == 0) {
  29.                     return c.substring(nameEQ.length, c.length);
  30.                 }
  31.             }
  32.             return null;
  33.         }
  34.         function setData(data) {
  35.             data = JSON.stringify(data);
  36.             if (type == 'session') {
  37.                 window.name = data;
  38.             } else {
  39.                 createCookie('localStorage', data, 365);
  40.             }
  41.         }
  42.         function clearData() {
  43.             if (type == 'session') {
  44.                 window.name = '';
  45.             } else {
  46.                 createCookie('localStorage', '', 365);
  47.             }
  48.         }
  49.         function getData() {
  50.             var data = type == 'session' ? window.name : readCookie('localStorage');
  51.             return data ? JSON.parse(data) : {};
  52.         }
  53.  
  54.  
  55.         // initialise if there's already data
  56.         var data = getData();
  57.  
  58.         return {
  59.             length: 0,
  60.             clear: function () {
  61.                 data = {};
  62.                 this.length = 0;
  63.                 clearData();
  64.             },
  65.             getItem: function (key) {
  66.                 return data[key] === undefined ? null : data[key];
  67.             },
  68.             key: function (i) {                
  69.                 var ctr = 0;
  70.                 for (var k in data) {
  71.                     if (ctr == i) return k;
  72.                     else ctr++;
  73.                 }
  74.                 return null;
  75.             },
  76.             removeItem: function (key) {
  77.                 delete data[key];
  78.                 this.length--;
  79.                 setData(data);
  80.             },
  81.             setItem: function (key, value) {
  82.                 data[key] = value + '';
  83.                 this.length++;
  84.                 setData(data);
  85.             }
  86.         };
  87.     };
  88.  
  89.     if (typeof window.localStorage == 'undefined') window.localStorage = new Storage('local');
  90.     if (typeof window.sessionStorage == 'undefined') window.sessionStorage = new Storage('session');
  91.  
  92. })();
Advertisement
Add Comment
Please, Sign In to add comment