Czyszczę localStorage w javascript?

746

Czy jest jakiś sposób, aby zresetować / wyczyścić localStorage przeglądarki w javascript?

Bnicholas
źródło

Odpowiedzi:

1371

Użyj tego, aby wyczyścić localStorage:

localStorage.clear();
Samolot cyfrowy
źródło
6
@ BakedInhalf wcale. Może Twoja aplikacja ustawia to od nowa?
destan
5
Wywołuję localStorage.clear () podczas uruchamiania mojej aplikacji, ale nawet jeśli zamknę przeglądarkę, wyczyszczę pamięć podręczną itp., Dane nadal tam są. Wiem o tym, ponieważ ustawiłem właściwość „instance” w moim modelu na liczbę losową podczas inicjalizacji, a dla danego identyfikatora właściwość instance jest zawsze taka sama.
sydneyos
11
@ digital-plane Czy to usunie pamięć lokalną z określonej domeny lub całej pamięci?
crisron
18
clear()usunie wszystkie klucze i wartości localStorage z konkretnej domeny, w której jesteś. JavaScript nie może pobrać wartości localStorage z żadnych innych domen z powodu CORS.
Fizzix,
1
@ BakedInhalf ma rację, pozostanie, dopóki nie odświeżysz strony. Gdy wyczyścisz localStorage i wypełnisz go zaraz potem, przywróci on poprzednią zawartość i doda do niej nowy element. Po wyczyszczeniu localStorage i przeprowadzeniu twardego odświeżania, jest ono puste i możesz zacząć go ponownie wypełniać.
Cyber
198

Jeśli chcesz usunąć określony Element lub zmienną z lokalnej pamięci użytkownika, możesz użyć

localStorage.removeItem("name of localStorage variable you want to remove");
Ajeet Lakhani
źródło
1
Cześć, @Ajeet Jeśli nie chcę usuwać określonego elementu, czy jest też sposób, aby to zrobić? Na przykład „removeItemNotIn (key)”, „remove all oprócz zdefiniowanego klucza”? Z góry dziękuję.
Me_developer
Cześć, @Shadow Jeśli nie chcę usuwać określonego elementu, czy jest też sposób, aby to zrobić? Na przykład „removeItemNotIn (key)”, „remove all oprócz zdefiniowanego klucza”? Z góry dziękuję.
Me_developer
Znalazłem rozwiązanie mojego problemu: - if (localStorage.getItem (szczególny klucz) == null) {localStorage.clear (); } Ale jeśli masz lepsze rozwiązanie, daj mi znać. Dzięki.
Me_developer
1
@learner Więc chcesz usunąć wszystkie klucze oprócz określonego klucza , prawda? W tym celu możesz zrobić coś takiego var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
Ajeet Lakhani,
1
Możliwe także: uzyskanie wartości, kasowanie i ponowne ustawienie wartości, bardziej wszechstronna. let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
Michael B.
112
window.localStorage.clear(); //try this to clear all local storage
Naftali alias Neal
źródło
11

Oto funkcja, która pozwoli Ci usunąć wszystkie elementy localStorage z wyjątkami. Będziesz potrzebował jQuery dla tej funkcji. Możesz pobrać listę .

Możesz to tak nazwać

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);
    }
  }
};
Christian Juth
źródło
1
Dziwne jest to, że undefinedjest to ważny klucz do setItemigetItem
ebob
@ebob Tak, może się to wydawać dziwne, ale nie, tak naprawdę nie jest. localStorage działa w podobny sposób jak obiekty, ponieważ klucze są konwertowane na ciągi znaków. Na przykład użycie niezdefiniowanego jako klucza takiego: localStorage.setItem(undefined, 'example Txt!')spowoduje, że automatycznie zapisze go pod kluczem o nazwie, 'undefined'jak widać po uruchomieniu następującego kodu. console.log(localStorage.getItem('undefined')) wyjdzie example Txt!.
Jack Giffin,
8

Localstorage jest dołączony na całym świecie window. Kiedy logujemy localstorage w chrome devtools, widzimy, że ma on następujące interfejsy API:

wprowadź opis zdjęcia tutaj

Do usuwania elementów możemy użyć następujących interfejsów API:

  1. localStorage.clear(): Czyści cały lokalny magazyn
  2. localStorage.removeItem('myItem'): Aby usunąć pojedyncze elementy
Willem van der Veen
źródło
4

Po pierwsze, musisz sprawdzić, aby upewnić się, że localStorage jest włączony. Poleciłbym zrobić to w ten sposób:

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

Tak, możesz (w niektórych przypadkach) po prostu sprawdzić, czy localStorage jest członkiem obiektu okna. Istnieją jednak opcje piaskownicy iframe (między innymi), które zgłoszą wyjątek, nawet jeśli spróbujesz uzyskać dostęp do indeksu „localStorage”. Dlatego, ze względu na najlepsze praktyki, jest to najlepszy sposób, aby sprawdzić, czy localStorage jest włączony. Następnie możesz po prostu wyczyścić localStorage w ten sposób.

if (localStorageEnabled) localStorage.clear();

Na przykład, możesz wyczyścić localStorage po wystąpieniu błędu w takich przeglądarkach webkit.

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

W powyższym przykładzie potrzebujesz, .bind(window)ponieważ bez niego localStorage.clearfunkcja będzie działać w kontekście windowobiektu, zamiast localStorageobiektu powodując jego cichą awarię. Aby to zademonstrować, spójrz na poniższy przykład:

window.onerror = localStorage.clear;

jest taki sam jak:

window.onerror = function(){
    localStorage.clear.call(window);
}
Jack Giffin
źródło
3

Jeśli chcesz usunąć wszystkie elementy przechowywane w localStorage, to

localStorage.clear();

Użyj tego do wyczyszczenia wszystkich przechowywanych kluczy.

Jeśli chcesz wyczyścić / usunąć tylko określony klucz / wartość, możesz użyć removeItem (klucz) .

localStorage.removeItem('yourKey');
Moshiur Rahman
źródło
2
localStorage.clear();

lub

window.localStorage.clear();

wyczyścić konkretny element

window.localStorage.removeItem("item_name");

Aby usunąć określoną wartość według identyfikatora:

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;
                }
            });
Vino
źródło
1

Aby wyczyścić sessionStorage

sessionStorage.clear();
m-farhan
źródło
0

Oto prosty kod, który wyczyści pamięć lokalną przechowywaną w przeglądarce za pomocą 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>

Aby potwierdzić, czy pamięć lokalna jest pusta, użyj tego kodu:

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

jeśli zwróci null, lokalne zapisywanie zostanie wyczyszczone.

amaroko
źródło
0

Ten kod podaje tutaj listę ciągów kluczy, których nie chcesz usunąć, a następnie odfiltrowuje je ze wszystkich kluczy w pamięci lokalnej, a następnie usuwa pozostałe.

const allKeys = Object.keys(localStorage);

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

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});
Joseph Moore
źródło