window.localStorage polyfill

Check for localStorage support and fall back to simple session storage. At time of writing 89% of browsers support localStorage so falling back to cookie is unnecessary.

by Html Dev

HTML

<p>window.localStorage test:</p>
<p id="storageTest"></p>

CSS

p {
    font: 1.2em Arial, Helvetica, sans-serif;
}

JavaScript

(function () {

  'use strict';

  var supported;

  if (window.hasOwnProperty('localStorage') && window.localStorage !== null) {

    supported = true;

    try {
      var key = 'swxTest_' + Math.round(Math.random() * 1e7);
      window.localStorage.setItem(key, 'test');
      window.localStorage.removeItem(key);
    }
    catch (e) {
      console.warn('localStorage not functional, falling back to session Object.');
      supported = false;
    }
  }

  if (!supported) {

    var data = {};

    window.localStorage = {
      setItem: function(key, value) {
        data[key] = value;
        return data[key];
      },
      getItem: function(key) {
        return (key in data) ? data[key] : undefined;
      },
      removeItem: function(key) {
        delete data[key];
        return undefined;
      },
      clear: function() {
        data = {};
        return data;
      }
    };
  }
}());

window.localStorage.setItem('ciaopino', 'folta');

var storageTest = document.getElementById('storageTest');
storageTest.innerHTML = window.localStorage.getItem('ciaopino');