多标签页共享sessionstorage 可以用来共享用户登录信息
const initShareSessionStroage = () => {
const hashMap = new Map([
[
'getSessionStorage',
() => {
console.log(132)
localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage))
localStorage.removeItem('sessionStorage')
},
],
[
'sessionStorage',
(newValue: string | null) => {
if (sessionStorage.length) return
if (newValue) {
var data = JSON.parse(newValue)
for (const key in data) {
sessionStorage.setItem(key, data[key])
}
}
},
],
[
'clearOther',
() => {
localStorage.setItem('clearMyself', Date.now().toString())
localStorage.removeItem('loginOut')
sessionStorage.clear()
localStorage.clear()
},
],
[
'clearMyself',
() => {
sessionStorage.clear()
localStorage.clear()
},
],
])
try {
if (!sessionStorage.length) localStorage.setItem('getSessionStorage', Date.now().toString())
window.addEventListener('storage', (event: StorageEvent) => event.key && hashMap.get(event.key)?.(event.newValue))
} catch (error) {
console.log(error)
}
}
整理不易,有问题请留言,如果可以,请为本文留下一个小赞。