904 Stimmen

Löschung von localStorage in javascript?

Gibt es eine Möglichkeit zum Zurücksetzen/Löschen des Browsers localStorage in javascript?

3 Stimmen

14voto

Christian J Punkte 2095

Hier ist eine Funktion, mit der Sie alle localStorage-Elemente mit Ausnahmen entfernen können. Sie benötigen jQuery für diese Funktion. Sie können das Wesentliche herunterladen .

Sie können sie folgendermaßen aufrufen

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 Stimmen

Das Seltsame ist, dass undefined ist ein gültiger Schlüssel für setItem y getItem

1 Stimmen

@ebob Ja, es mag seltsam erscheinen, aber nein, das ist es nicht. localStorage funktioniert ähnlich wie Objekte, indem die Schlüssel in Strings umgewandelt werden. Wenn Sie zum Beispiel undefined als Schlüssel verwenden, sieht das so aus: localStorage.setItem(undefined, 'example Txt!') speichern, wird es tatsächlich unter dem Schlüssel 'undefined' wie Sie sehen können, wenn Sie den folgenden Code ausführen. console.log(localStorage.getItem('undefined')) wird ausgegeben example Txt! .

13voto

Moshiur Rahman Punkte 1392

Wenn Sie alle Artikel löschen möchten, die Sie in localStorage entonces

localStorage.clear();

Verwenden Sie dies, um alle gespeicherten Schlüssel zu löschen.

Wenn Sie nur einen bestimmten Schlüssel/Wert löschen/entfernen möchten, können Sie removeItem(Schlüssel) .

localStorage.removeItem('yourKey');

9voto

vino Punkte 97
localStorage.clear();

または

window.localStorage.clear();

zum Ausgleich eines bestimmten Postens

window.localStorage.removeItem("item_name");

Um einen bestimmten Wert nach id zu entfernen:

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

6voto

Jack G Punkte 3797

Als Erstes müssen Sie überprüfen, ob localStorage aktiviert ist. Ich würde empfehlen, dies wie folgt zu tun:

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

Ja, Sie können (in einigen Fällen) einfach überprüfen, ob der localStorage ein Mitglied des Window-Objekts ist. Allerdings gibt es iframe Sandboxing-Optionen (unter anderem), die eine Ausnahme auslösen, wenn Sie sogar versuchen, auf den Index "localStorage" zuzugreifen. Aus Best-Practice-Gründen ist dies also der beste Weg, um zu prüfen, ob localStorage aktiviert ist. Dann können Sie den localStorage einfach wie folgt löschen.

if (localStorageEnabled) localStorage.clear();

Zum Beispiel könnten Sie den localStorage nach einem Fehler in Webkit-Browsern wie folgt löschen.

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

Im obigen Beispiel benötigen Sie die .bind(window) denn ohne sie würde die localStorage.clear Funktion wird im Kontext der window Objekt anstelle des localStorage Objekt, wodurch es stillschweigend scheitert. Um dies zu demonstrieren, sehen Sie sich das folgende Beispiel an:

window.onerror = localStorage.clear;

ist dasselbe wie:

window.onerror = function(){
    localStorage.clear.call(window);
}

3voto

Joseph Moore Punkte 364

In diesem Code geben Sie eine Liste von Schlüsselzeichenfolgen an, die Sie nicht löschen wollen, dann werden diese aus allen Schlüsseln im lokalen Speicher gefiltert und die anderen gelöscht.

const allKeys = Object.keys(localStorage);

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

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X