Очистить IndexedDB при закрытии вкладки - PullRequest
0 голосов
/ 16 апреля 2020

Мне нужно сохранить некоторые данные в indexedDB вместо sessionStorage, так как объем данных превышает 5 МБ.

Я запутался в стратегии очистки, как в случае перезагрузки страницы или перехода к на другой странице мне нужно сохранить эти данные, но если пользователь закрывает вкладку браузера, я хотел бы удалить ее, чтобы сохранить место.

Как я могу это сделать? Нужно чтобы оно работало хотя бы в Chrome.

1 Ответ

0 голосов
/ 16 апреля 2020

Вы можете сохранить индикатор в хранилище сеанса, а затем удалить базу данных, если это значение не существует.

(async() =>
{
  if (!sessionStorage.getItem('just-a-placeholder'))
  {
    indexedDB.deleteDatabase('temp');
    sessionStorage.setItem('just-a-placeholder', true);
  }

  const databases = await indexedDB.databases();
  console.log(databases.find(db => db.name === 'temp') !== undefined)
  await indexedDB.open('temp');
})();

К сожалению, StackOverflow не запускает фрагменты так, как я мог бы показать здесь, но вот JSFiddle , чтобы показать его в действии.

...