-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathsaveYourLocalStorage.html
35 lines (35 loc) · 1.17 KB
/
saveYourLocalStorage.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!doctype html>
<html>
<head><meta charset="UTF-8"><title>localStorage saving</title>
<script>
var listen = window.addEventListener;
(listen||window.attachEvent)((listen ?'':'on') +'message', function(ev){
var d = typeof ev.data =='string' && ev.data[0] =='{' ? JSON.parse(ev.data) : ev.data
if(!d.do) return;
var tok = d.tok
,key = d.key;
switch(d.do){
case 'set':
var prev = localStorage[key];
if(d.val !==undefined)
localStorage[key] = JSON.stringify(d.val);
else
localStorage.removeItem(key);
break;
case 'get':
prev = localStorage[key];
prev = prev === undefined || typeof prev =='string'&& prev[0] !='{'? prev : JSON.parse(prev); break
case 'remove':
prev = localStorage[key];
if(prev !==undefined)
localStorage.removeItem(key);
}
console.log('[io2]', tok, 'prev=', prev);
ev.source.postMessage(JSON.stringify(prev !==undefined ? {tok: tok, prev: prev} : {tok: tok, undef:1}), ev.origin);
},!1);
</script>
</head>
<body>
This page supports saving of localStorage (on the domain github.io) for sites which erase it on its own domain (such as google.*, facebook.com etc.).
</body>
</html>