mirror of
https://github.com/liriliri/eruda.git
synced 2026-03-20 09:38:37 +08:00
34 lines
703 B
JavaScript
34 lines
703 B
JavaScript
/* Safe localStorage and sessionStorage.
|
|
*/
|
|
|
|
_('isUndef memStorage');
|
|
|
|
function exports(type, memReplacement) {
|
|
if (isUndef(memReplacement)) memReplacement = true;
|
|
|
|
var ret;
|
|
|
|
switch (type) {
|
|
case 'local':
|
|
ret = window.localStorage;
|
|
break;
|
|
case 'session':
|
|
ret = window.sessionStorage;
|
|
break;
|
|
}
|
|
|
|
try {
|
|
// Safari private browsing
|
|
var x = 'test-localStorage-' + Date.now();
|
|
ret.setItem(x, x);
|
|
var y = ret.getItem(x);
|
|
ret.removeItem(x);
|
|
if (y !== x) throw new Error();
|
|
} catch (e) {
|
|
if (memReplacement) return memStorage;
|
|
return;
|
|
}
|
|
|
|
return ret;
|
|
}
|