Files
eruda/eustia/safeStorage.js
2018-06-12 22:19:56 +08:00

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;
}