UNPKG

local-storage-es5

Version:

A simplified localStorage API that just works

57 lines (46 loc) 904 B
'use strict'; var listeners = {}; var listening = false; function listen() { if (global.addEventListener) { global.addEventListener('storage', change, false); } else if (global.attachEvent) { global.attachEvent('onstorage', change); } else { global.onstorage = change; } } function change(e) { if (!e) { e = global.event; } var all = listeners[e.key]; if (all) { all.forEach(fire); } function fire(listener) { listener(JSON.parse(e.newValue), JSON.parse(e.oldValue), e.url || e.uri); } } function on(key, fn) { if (listeners[key]) { listeners[key].push(fn); } else { listeners[key] = [fn]; } if (listening === false) { listen(); } } function off(key, fn) { var ns = listeners[key]; if (ns.length > 1) { ns.splice(ns.indexOf(fn), 1); } else { listeners[key] = []; } } module.exports = { on: on, off: off };