закрытие браузера ? sessionStorage работает только на вкладку а мне нужно чтобы до закрытие браузера или может быть такой момент убить процесс браузера чтобы эти данные удалились есть ли способ такой ?
можете юзать localStorage и чистить по onbeforeunload
ну шарить между вкладками не получится же
onbeforeunload срабатывает на закрытие/обновление вкладки
да если убить процесс или свет офнулся на пк
облачное хранилище и облачные функции
ну так можно будет контролить несколько вкладок спокойно и onbeforeunload же вызывается, когда браузер закрывается конечно, это не идеально, но я других вариантов не вижу
я думал можно настроить хранилище чтобы оно хранило только пока процесс браузера жив
Можно через BroadcastChannel шарить состояние между вкладками. И пока открыта хотя бы одна вкладка, браузер будет помнить.
полифилл через localStorage. через 500 мс он чистится https://github.com/JSmith01/broadcastchannel-polyfill/blob/master/index.js
О спасибо большое
1. Может быть тебе подойдет отчистка по бездействию 30 минут? Это будет в 100 раз проще 2. Можно отслеживать количество активных вкладок. И по onbeforeunload если не осталось других вкладок делать чистку, только не знаю как это сработает если закрыть браузер с несколькими вкладками
Самая большая проблема это в том что если у пользователя процесс умрет хрома а данные не отчистить … По времени чёркать тоже не пойдёт так как он может и больше 30 минут или меньше
Да, ты прав, но в таком случае надо добавить еще код, который проверяет, что только что открытая вкладка первая и также чистить сторадж если там что-то осталось.
Ну вот я третий вариант придумал, можно держать какой-то объект(обычный типо const store = {}) в каждой вкладке. И при его изменении синхронизовать его во всех вкладках через BroadcastChannel
Когда вкладка закроется соответственно и объект пропадет
Да я думал сделать так чтобы чекал количество открытых вкладок и если их больше n то что то делать.. Наверное так и сделаю спасибо большое всем за советы
Обсуждают сегодня