< html > < head > < meta http - equiv = "Content-Type" content = "text/html; charset=UTF-8" > < title > Lyonscg Storage Iframe < /title> < script type = "text/javascript" > (function() { var MESSAGE_NAMESPACE = 'SharedDomStorage'; function postData(data) { parent.postMessage(JSON.stringify(data), '*'); } function receiveMessage(event) { var payload; try { payload = JSON.parse(event.data); } catch (err) { //not our message, can ignore } if (payload && payload.namespace === MESSAGE_NAMESPACE) { var data = { id: payload.id, namespace: payload.namespace }; var parent = window.parent; switch (payload.method) { case 'set': localStorage.setItem(payload.key, JSON.stringify(payload.data)); postData(data); break; case 'get': data.data = JSON.parse(localStorage.getItem(payload.key)); postData(data); break; case 'remove': localStorage.removeItem(payload.key); postData(data); break; case 'all': var archive = [], keys = Object.keys(localStorage), i = 0; for (; i < keys.length; i++) { archive.push(keys[i] + '=' + localStorage.getItem(keys[i])); } data.data = archive; postData(data); break; case 'clear': localStorage.clear(); postData(data); break; } } } if (window.addEventListener) { window.addEventListener('message', receiveMessage, false); } else { window.attachEvent('onmessage', receiveMessage); } function sendOnLoad() { var data = { namespace: MESSAGE_NAMESPACE, id: 'shareddomstorage-iframe-ready' }; postData(data); } //on creation sendOnLoad(); })(); < /script> < /head> < body > < /body>