localstorage-about-blank-partitioned-iframe.html (1025B)
1 <!doctype html> 2 <meta charset="utf-8"> 3 <script> 4 function getOrCreateID(key) { 5 if (!localStorage.getItem(key)) { 6 const newID = +new Date() + "-" + Math.random(); 7 localStorage.setItem(key, newID); 8 } 9 return localStorage.getItem(key); 10 } 11 12 window.addEventListener("load", () => { 13 // if we have an opener, we know that we are loaded inside a cross-site 14 // iframe (because we opened it ourselves). 15 if (parent.opener) { 16 const payload = { 17 message: "cross-site window iframe loaded", 18 userID: getOrCreateID("userID"), 19 } 20 parent.opener.postMessage(payload, parent.opener.origin); 21 } 22 }); 23 24 window.addEventListener("message", (e) => { 25 if (e.data.command == "create ID") { 26 getOrCreateID(e.data.key); 27 28 // storage is set, call back to window. 29 const payload = { 30 message: "ID created", 31 userID: localStorage.getItem("userID"), 32 } 33 34 e.source.postMessage(payload, e.source.origin); 35 } 36 37 if (e.data.command == "clearStorage") { 38 localStorage.clear(); 39 } 40 }); 41 </script>