Є дуже специфічний випадок використання, коли будь-яка пропозиція використовувати sessionStorage замість localStorage насправді не допомагає. У випадку використання буде щось таке ж просто, як щось зберігається, коли у вас відкрита принаймні одна вкладка, але її недійсною, якщо закрити останню вкладку, що залишилася. Якщо вам потрібно зберегти ваші значення перехресні вкладки та вікна, sessionStorage не допоможе вам, якщо ви не ускладните своє життя слухачам, як я намагався. Тим часом localStorage було б ідеально підходить для цього, але це робить роботу надто добре, оскільки ваші дані будуть там чекати навіть після перезавантаження браузера. Я в кінцевому рахунку використовував користувацький код та логіку, яка використовує переваги обох.
Я краще поясню, а потім даю код. Спочатку зберігайте те, що вам потрібно в localStorage, потім також у localStorage створіть лічильник, який буде містити кількість відкритих вами вкладок. Це збільшуватиметься щоразу, коли сторінка завантажується, і зменшується щоразу, коли сторінка завантажується. Ви можете обрати тут події для використання, я б запропонував "завантажити" та "вивантажити". Під час завантаження потрібно виконувати завдання очищення, які ви хотіли б виконати, коли лічильник досягне 0, тобто ви закриваєте останню вкладку. Ось ця хитра частина: я не знайшов надійного і загального способу визначити різницю між перезавантаженням сторінки або навігацією всередині сторінки та закриттям вкладки. Тож якщо збережені вами дані - це не те, що ви можете відновити при завантаженні, перевіривши, що це ваша перша вкладка, тоді ви не зможете видалити його під час кожного оновлення. Натомість вам потрібно зберігати прапор у sessionStorage при кожному завантаженні, перш ніж збільшувати лічильник вкладок. Перш ніж зберігати це значення, ви можете здійснити перевірку, щоб перевірити, чи воно вже має значення, а якщо це не так, це означає, що ви завантажуєтесь у цей сеанс вперше, це означає, що ви можете зробити очищення при завантаженні, якщо це значення не встановлено, а лічильник дорівнює 0.