Files
eruda/eustia/safeStorage.js
2018-06-16 18:07:12 +08:00

34 lines
608 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
}