如果您想在多个选项卡中使用SessionStorage(这似乎是正确的),您可以在选项卡之间复制其数据,例如使用LocalStorage
事件(参见下面的代码示例)或BroadcastChannel,如本问答中所述,或者实现自动登录,就像替代解决方案一样。
(function(){
if (!sessionStorage.length) {
// trigger the event to get anything from other tabs
localStorage.setItem('getSessionStorage', Date.now());
};
window.addEventListener('storage', function(event) {
if (event.key == 'getSessionStorage') {
//set and remove, so do not really keep the data in LS, but push it into event
localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage));
localStorage.removeItem('sessionStorage');
} else if (event.key == 'sessionStorage' && !sessionStorage.length) {
var data = JSON.parse(event.newValue);
for (key in data) {
sessionStorage.setItem(key, data[key]);
}
}
});