8040威尼斯
// 解决跨标签 sessionStorage 共享
(() => {
console.log('begin',window.sessionStorage.length)
// 判斷當前頁面是否存在sessionStorage
if (!window.sessionStorage.length) {
// 若不存在則加上一個localStorage Item, Key = getSessionStorageData
window.localStorage.setItem('getSessionStorageData', Date.now())
}
// 增加window監聽事件'storage'
window.addEventListener('storage', (event) => {
console.log('begin-event',event)
// 如果偵聽到的事件是key是getSessionStorageData
console.log('key:',event.key);
if (event.key === window.configJs.SESSION_PREFIX + 'getSessionStorageData') {
// 再新增一個localstorage Item, key = sessionStorageData,value就是當前的sessionStorage
window.localStorage.setItem('sessionStorageData', JSON.stringify(window.sessionStorage))
// 刪除localstorage中key = sessionStorageData的item
window.localStorage.removeItem('sessionStorageData')
}
// 如果偵聽到的事件是key是sessionStorageData, 且當前的sessionStorage是空的
if (event.key === window.configJs.SESSION_PREFIX + 'sessionStorageData') {
// 把sessionStorageData的資料parse出來
const data = JSON.parse(event.newValue)
// 賦值到當前頁面的sessionStorage中
for (let key in data) {
let originalKey = key.replaceAll(window.configJs.SESSION_PREFIX, '')
window.sessionStorage.setItem(originalKey, data[key])
}
locations.reload();
}
if (event.key === window.configJs.SESSION_PREFIX + 'isLogin') {
if (window.sessionStorage.getItem('user') === null ) {
window.sessionStorage.clear();
window.localStorage.clear();
locations.reload();
}
}
if (event.key === window.configJs.SESSION_PREFIX + 'isLogout') {
if (window.sessionStorage.getItem('user')) {
window.sessionStorage.clear();
window.localStorage.clear();
locations.reload();
}
}
})
})()8040威尼斯