mirror of
https://github.com/liriliri/eruda.git
synced 2026-03-24 09:48:37 +08:00
34 lines
608 B
JavaScript
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
|
|
}
|