Существует очень специфический вариант использования, в котором любое предложение использовать sessionStorage вместо localStorage действительно не помогает.Вариант использования будет таким же простым, как сохранение чего-либо, пока у вас есть хотя бы одна открытая вкладка, но аннулируйте его, если закроете последнюю оставшуюся вкладку.Если вам нужно сохранить свои значения в кросс-таблице и окне, sessionStorage не поможет вам, если вы не усложните свою жизнь со слушателями, как я пытался.В то же время localStorage идеально подходит для этого, но он выполняет свою работу «слишком хорошо», так как ваши данные будут ждать там даже после перезапуска браузера.В итоге я использовал собственный код и логику, которые используют оба преимущества.
Я бы лучше объяснил, чем дал код.Сначала сохраните то, что вам нужно, в localStorage, затем также в localStorage создайте счетчик, который будет содержать количество открытых вами вкладок.Это будет увеличиваться при каждой загрузке страницы и уменьшаться при каждой ее загрузке.Вы можете выбрать здесь, какие события использовать, я бы предложил «загрузить» и «выгрузить».В то время, когда вы выгружаете, вам нужно выполнять задачи очистки, которые вы хотели бы выполнять, когда счетчик достигает 0, то есть вы закрываете последнюю вкладку.Здесь возникает сложная часть: я не нашел надежного и универсального способа определить разницу между перезагрузкой страницы или навигацией внутри страницы и закрытием вкладки.Поэтому, если данные, которые вы сохраняете, не являются чем-то, что вы можете восстановить при загрузке после проверки того, что это ваша первая вкладка, вы не сможете удалить их при каждом обновлении.Вместо этого вам нужно хранить флаг в sessionStorage при каждой загрузке, прежде чем увеличивать счетчик вкладок.Перед сохранением этого значения вы можете проверить, есть ли у него значение, а если нет, то это означает, что вы загружаетесь в этот сеанс впервые, то есть вы можете выполнить очистку при загрузке, если этозначение не установлено, а счетчик равен 0.