UNPKG

gaf-mobile

Version:

GAF mobile Web site

94 lines (82 loc) 2.33 kB
// This is a custom version of hasdavidc's storage polyfill // https://gist.github.com/hasdavidc/8527456 (function () { 'use strict'; function createCookie(name, value, days) { var date, expires; if (days) { date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = '; expires=' + date.toGMTString(); } else { expires = ''; } document.cookie = name + '=' + value + expires +'; path=/'; } function readCookie(name) { var nameEQ = name + '=', ca = document.cookie.split(';'), i, c; for (i = 0; i < ca.length; i++) { c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length, c.length); } } return null; } function setData(data) { data = JSON.stringify(data); createCookie('localStorage', data, 365); } function clearData() { createCookie('localStorage', '', 365); } function getData() { var data = readCookie('localStorage'); return data ? JSON.parse(data) : {}; } if (window.hasOwnProperty('localStorage')) { // Handle private browsers (Safari and Firefox) that have // localStorages defined but do not support writing to // localStorage and cookies // http://stackoverflow.com/questions/14555347 try { var key = 'fl-' + Math.round(Math.random()); window.localStorage.setItem(key, 'test'); window.localStorage.removeItem(key); } catch (e) { console.warn('LocalStorage/Cookies not usable, please disable ' + 'Private Browsing or enable local date to be set'); window.privateBrowser = true; } } else { var data = getData(); window.localStorage = { length: 0, setItem: function(key, value) { data[key] = value + ''; // forces the value to a string this.length++; setData(data); }, getItem: function(key) { return data[key] === undefined ? null : data[key]; }, removeItem: function(key) { delete data[key]; this.length--; setData(data); }, clear: function() { data = {}; this.length = 0; clearData(); } }; } }());