Очистить localStorage в JavaScript?

Ответы:

1373

Используйте это, чтобы очистить localStorage:

localStorage.clear();
Цифровой самолет
источник
6
@BakedInhalf совсем нет. Может быть, ваше приложение устанавливает это снова?
Дестан
5
Я вызываю localStorage.clear (), когда мое приложение запускается, но даже если я закрываю браузер, очищаю кеш и т. Д., Данные все еще там. Я знаю это, потому что я установил свойство «instance» в моей модели на случайное число при инициализации, и, для данного идентификатора, свойство instance всегда одинаково.
Сиднейос
11
@ digital-plane Это очистит локальное хранилище от определенного домена или всего хранилища?
Crisron
18
clear()удалит все ключи и значения localStorage из определенного домена, в котором вы находитесь. Javascript не может получить значения localStorage из других доменов из-за CORS.
Fizzix
1
@BakedInhalf прав, он остается, пока вы не обновите страницу. Когда вы очищаете свой localStorage и заполняете его сразу после этого, он как бы восстанавливает предыдущий контент и добавляет в него новый элемент. Когда вы очистите свой localStorage и выполните hardrefresh, он пуст, и вы можете начать его заполнять снова.
Cyber
198

Если вы хотите удалить определенный элемент или переменную из локального хранилища пользователя, вы можете использовать

localStorage.removeItem("name of localStorage variable you want to remove");
Аджит Лакхани
источник
1
Привет, @Ajeet. Если я не хочу удалять определенный элемент, есть ли способ сделать это тоже? Например, «removeItemNotIn (key)», «удалить все, кроме определенного ключа»? Заранее спасибо.
Me_developer
Привет, @Shadow Если я не хочу удалять для определенного элемента, есть ли способ сделать это тоже? Например, «removeItemNotIn (key)», «удалить все, кроме определенного ключа»? Заранее спасибо.
Me_developer
Я нашел решение для моей проблемы: - if (localStorage.getItem (specificKey) == null) {localStorage.clear (); } Но если у вас есть лучшее решение, дайте мне знать. Спасибо.
Me_developer
1
@learner То есть вы хотите удалить все ключи, кроме определенного , верно? Для этого вы можете сделать что-то вроде этого var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
Аджит Лакхани
1
Также возможно: получение значения, очистка и установка значения снова, более универсальный. let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
Майкл Б.
112
window.localStorage.clear(); //try this to clear all local storage
Нафтали ака Нил
источник
11

Вот функция, которая позволит вам удалить все элементы localStorage с исключениями. Вам понадобится jQuery для этой функции. Вы можете скачать суть .

Вы можете назвать это так

let clearStorageExcept = function(exceptions) {
  let keys = [];
  exceptions = [].concat(exceptions); // prevent undefined

  // get storage keys
  $.each(localStorage, (key) => {
    keys.push(key);
  });

  // loop through keys
  for (let i = 0; i < keys.length; i++) {
    let key = keys[i];
    let deleteItem = true;

    // check if key excluded
    for (let j = 0; j < exceptions.length; j++) {
      let exception = exceptions[j];
      if (key == exception) {
        deleteItem = false;
      }
    }

    // delete key
    if (deleteItem) {
      localStorage.removeItem(key);
    }
  }
};
Кристиан Джут
источник
1
Странная вещь , что undefinedявляется допустимым ключом для setItemиgetItem
ebob
@ebob Да, это может показаться странным, но нет, на самом деле это не так. localStorage функционирует аналогично объектам в том смысле, что ключи преобразуются в строки. Например, использование неопределенного в качестве ключа, подобного следующему localStorage.setItem(undefined, 'example Txt!'):, сохранит его под ключом, 'undefined'который вы видите, как вы видите при запуске следующего кода. console.log(localStorage.getItem('undefined')) будет выводить example Txt!.
Джек Гиффин
8

Локальное хранилище прикреплено к глобальному window. Когда мы регистрируем localalstorage в chrome devtools, мы видим, что у него есть следующие API:

введите описание изображения здесь

Мы можем использовать следующие API для удаления элементов:

  1. localStorage.clear(): Очищает все местное хранилище
  2. localStorage.removeItem('myItem'): Удалить отдельные элементы
Виллем ван дер Веен
источник
4

Перво-наперво, вам нужно проверить, чтобы убедиться, что localStorage включен. Я бы порекомендовал сделать это так:

var localStorageEnabled = false;
try { localStorageEnabled = !!localStorage; } catch(e) {};

Да, вы можете (в некоторых случаях) просто проверить, является ли localStorage членом объекта окна. Тем не менее, существуют опции песочницы iframe (помимо прочего), которые выдают исключение, если вы даже пытаетесь получить доступ к индексу localStorage. Таким образом, по причинам передового опыта, это лучший способ проверить, включен ли localStorage. Затем вы можете просто очистить localStorage следующим образом.

if (localStorageEnabled) localStorage.clear();

Например, вы можете очистить localStorage после того, как в браузерах webkit произойдет ошибка.

// clears the local storage upon error
if (localStorageEnabled)
  window.onerror = localStorage.clear.bind(localStorage);

В приведенном выше примере вам нужно, .bind(window)потому что без него localStorage.clearфункция будет работать в контексте windowобъекта, а не localStorageобъекта, заставляя его молча завершаться сбоем. Чтобы продемонстрировать это, посмотрите на приведенный ниже пример:

window.onerror = localStorage.clear;

такой же как:

window.onerror = function(){
    localStorage.clear.call(window);
}
Джек Гиффин
источник
3

Если вы хотите очистить весь элемент, который вы сохранили в localStorage, то

localStorage.clear();

Используйте это для очистки всех сохраненных ключей.

Если вы хотите очистить / удалить только определенный ключ / значение, вы можете использовать removeItem (ключ) .

localStorage.removeItem('yourKey');
Мошиур Рахман
источник
2
localStorage.clear();

или

window.localStorage.clear();

очистить конкретный элемент

window.localStorage.removeItem("item_name");

Чтобы удалить конкретное значение по id:

var item_detail = JSON.parse(localStorage.getItem("key_name")) || [];           
            $.each(item_detail, function(index, obj){
                if (key_id == data('key')) {
                    item_detail.splice(index,1);
                    localStorage["key_name"] = JSON.stringify(item_detail);
                    return false;
                }
            });
дешевое вино
источник
1

Очистить сессиюStorage

sessionStorage.clear();
м-Фархан
источник
0

Вот простой код, который очистит локальное хранилище, хранящееся в вашем браузере, с помощью JavaScript

    <script type="text/javascript">

if(localStorage) { // Check if the localStorage object exists

    localStorage.clear()  //clears the localstorage

} else {

    alert("Sorry, no local storage."); //an alert if localstorage is non-existing
}

</script>

Чтобы подтвердить, что localstorage пусто, используйте этот код:

<script type="text/javascript">

// Check if the localStorage object exists
if(localStorage) {

    alert("Am still here, " + localStorage.getItem("your object name")); //put the object name
} else {
    alert("Sorry, i've been deleted ."); //an alert
}

</script>

если он возвращает ноль, то ваше локальное хранилище очищается.

amaroko
источник
0

Этот код дает вам список строк ключей, которые вы не хотите удалять, затем он фильтрует их по всем ключам в локальном хранилище, а затем удаляет остальные.

const allKeys = Object.keys(localStorage);

const toBeDeleted = allKeys.filter(value => {
  return !this.doNotDeleteList.includes(value);
});

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});
Джозеф Мур
источник