Files
eruda/eustia/safeStorage.js
2018-01-20 20:24:21 +08:00

33 lines
667 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;
}