Очищення локального зберігання в JavaScript?


Відповіді:


1371

Використовуйте це, щоб очистити localStorage:

localStorage.clear();

6
@BakedInhalf зовсім не є. Можливо, ваш додаток налаштовує це знову?
дестан

5
Я закликаю localStorage.clear (), коли моя програма запускається, але навіть якщо я закриваю браузер, очищаю кеш тощо, дані все ще є. Я знаю це, тому що я встановив властивість "екземпляр" на своїй моделі на випадкове число при ініціалізації, і для даного ідентифікатора властивість екземпляра завжди однакове.
sydneyos

11
@ digital-plane Чи очистить це локальне сховище від певного домену чи всього сховища?
crisron

18
clear()видалить усі локальні ключі та значення із конкретного домену, на якому ви перебуваєте. Через CORS Javascript не може отримати значення localStorage з будь-якого іншого домену.
Fizzix

1
@BakedInhalf правий, він залишається, поки ви важко оновіть сторінку. Коли ви очистите локальний сховище та заповніть його одразу, він відновить попередній вміст і додасть до нього новий елемент. Коли ви очистите локальний сховище та зробите оновлення, воно порожнє, і ви можете розпочати його знову.
Кібер

198

Якщо ви хочете видалити певний Елемент або змінну з локального сховища користувача, ви можете використовувати

localStorage.removeItem("name of localStorage variable you want to remove");

1
Привіт, @Ajeet Якщо я не хочу видаляти певний предмет, чи є спосіб це зробити? Наприклад, "deleteItemNotIn (ключ)", "видалити всі, крім визначеного ключа"? Заздалегідь спасибі.
Me_developer

Привіт, @Shadow Якщо я не хочу видаляти певний предмет, чи є спосіб це зробити? Наприклад, "deleteItemNotIn (ключ)", "видалити всі, крім визначеного ключа"? Заздалегідь спасибі.
Me_developer

Я розібрався у вирішенні своєї проблеми: - if (localStorage.getItem (specialKey) == 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); } }
Ajeet Lakhani

1
Також можливо: отримання значення, очищення та встановлення значення знову, більш універсальне. let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
Майкл Б.


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 функціонує аналогічно об'єктам, коли ключі перетворюються на рядки. Наприклад, використовуючи undefined як ключ, подібний до цього:, localStorage.setItem(undefined, 'example Txt!')буде активовано зберігати його під ключем, викликаним так, 'undefined'як ви можете бачити при запуску наступного коду. console.log(localStorage.getItem('undefined')) виведе example Txt!.
Джек Гіффін

8

Локальне зберігання додається в глобальному масштабі window. Коли ми реєструємо локальне зберігання у хромованих розробниках, ми бачимо, що він має такі API:

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

Для видалення елементів ми можемо використовувати такі API:

  1. localStorage.clear(): Очищає весь локальний магазин
  2. localStorage.removeItem('myItem'): Для видалення окремих елементів

4

Спочатку все спочатку потрібно перевірити, щоб переконатися, що localStorage увімкнено. Я рекомендую зробити це так:

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

Так, ви можете (в деяких випадках) просто перевірити, чи є localStorage членом об’єкта вікна. Однак існують варіанти пісочниці iframe (серед іншого), які викинуть виняток, якщо ви навіть спробуєте отримати доступ до індексу "localStorage". Таким чином, з міркувань кращих практик це найкращий спосіб перевірити, чи активовано локальне зберігання. Тоді ви можете просто очистити локальний сховище так.

if (localStorageEnabled) localStorage.clear();

Наприклад, ви можете очистити localStorage після появи помилки у веб-браузерах веб-програм.

// 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();

Використовуйте це, щоб очистити весь збережений ключ.

Якщо ви хочете очистити / видалити лише певний ключ / значення, тоді ви можете скористатися deleteItem (ключ) .

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;
                }
            });


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>

Щоб підтвердити, чи локальне зберігання порожнє, використовуйте цей код:

<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>

якщо він поверне нулеве значення, то ваш локальний сховище буде очищено.


0

У цьому коді ви надаєте список рядків ключів, які ви не хочете видаляти, після чого він фільтрує їх з усіх клавіш у локальному сховищі, а потім видаляє інші.

const allKeys = Object.keys(localStorage);

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

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.