Istnieje bardzo szczególny przypadek użycia, w którym jakakolwiek sugestia użycia sessionStorage zamiast localStorage tak naprawdę nie pomaga. Przypadek użycia byłby czymś tak prostym, jak przechowywanie czegoś, gdy masz przynajmniej jedną otwartą kartę, ale unieważnij to, jeśli zamkniesz ostatnią pozostałą kartę. Jeśli potrzebujesz, aby twoje wartości były zapisywane między kartami i oknem, sessionStorage nie pomoże ci, chyba że komplikujesz swoje życie słuchaczom, tak jak próbowałem. W międzyczasie localStorage byłby do tego idealny, ale wykonuje to zadanie „zbyt dobrze”, ponieważ twoje dane będą tam czekać nawet po ponownym uruchomieniu przeglądarki. Skończyło się na użyciu niestandardowego kodu i logiki, która korzysta z obu.
Wolę wyjaśnić, niż podać kod. Najpierw zapisz to, czego potrzebujesz w localStorage, a następnie również w localStorage utwórz licznik, który będzie zawierał liczbę otwartych kart. Będzie to zwiększane za każdym razem, gdy strona się ładuje, i zmniejszane za każdym razem, gdy strona się rozładowuje. Tutaj możesz wybrać wydarzenia, które chcesz użyć, sugeruję „załaduj” i „rozładuj”. Podczas rozładowywania musisz wykonać zadania czyszczenia, które chcesz, gdy licznik osiągnie 0, co oznacza, że zamykasz ostatnią kartę. Oto trudna część: nie znalazłem wiarygodnego i ogólnego sposobu na odróżnienie przeładowania strony lub nawigacji na stronie od zamknięcia karty. Jeśli więc przechowywane dane nie są czymś, co można odbudować po załadowaniu po sprawdzeniu, że jest to Twoja pierwsza karta, nie można go usunąć przy każdym odświeżeniu. Zamiast tego należy przechowywać flagę w sessionStorage przy każdym ładowaniu przed zwiększeniem licznika tabulatorów. Przed zapisaniem tej wartości możesz sprawdzić, czy ma ona już wartość, a jeśli nie, oznacza to, że ładujesz się do tej sesji po raz pierwszy, co oznacza, że możesz wykonać czyszczenie przy ładowaniu, jeśli to wartość nie jest ustawiona, a licznik wynosi 0.