Синхронно обновлять sessionStorage из нескольких вкладок - PullRequest
0 голосов
/ 20 мая 2019

Если я открою новую вкладку B со страницы A с помощью window.open или _blank.A и B находятся в одном источнике.

Q1: Когда я устанавливаю или очищаю sessionStorage на странице B, как я могу синхронно обновить sessionStorage страницы A?

Q2: Если я использую localStorage для обмена данными, как я могу очистить эти данные после закрытия всех вкладок?

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Q1: Хранилище сеанса разделено вкладками, поэтому невозможно работать с sessionStorage страницы B со страницы A. НО вы можете использовать localStorage в качестве ссылки для управления чем-либо из каждой вкладки и окна. , просто умно используйте прослушиватель событий, подключенный к хранилищу.

window.addEventListener('storage', function(e) {  
  console.log(e + ' updated on localStorage');
  // Code to modify sessionStorage here
});

Q2: Вам необходимо отслеживать, сколько открытых вкладок, так как это относительно просто, это может привести к ошибкам (закрытие всех вкладок сразу не вызовет очистку), вы необходимо прикрепить прослушиватель событий для события закрытия.

window.addEventListener('unload', function(e) {  
  console.log(e);
  // Code to clear the storage
});
0 голосов
/ 20 мая 2019

Одним из простых способов может быть

Сохранение количества вкладок в localStorage и при закрытии вкладок проверка, если это последняя, ​​если да, то удалите sessionStorage из localStorage

...