基于用户基本数据安全性,综合localStorage与sessionStorage的部分优点,实现跨窗口的sessionStorage。核心是利用storage事件实时监听webStroage中的数据
(function(){
//入口,用于触发核心事件
if (!sessionStorage.length) {
localStorage.setItem('getSession', Date.now());
};
// 该事件是核心
window.addEventListener('storage', function(event) {
//已有窗口
if (event.key == 'getSession') {
localStorage.setItem('setSession', JSON.stringify(sessionStorage));
localStorage.removeItem('setSession');
}
//新开窗口
else if(event.key == 'setSession' && !sessionStorage.length) {
let data = JSON.parse(event.newValue);
//赋给这个窗口的sessionStorage
for (let key in data) {
sessionStorage.setItem(key, data[key]);
}
}
});
})();