web-dev-qa-db-de.com

HTML5 LocalStorage: Überprüfen, ob ein Schlüssel vorhanden ist

Warum funktioniert das nicht?

if(typeof(localStorage.getItem("username"))=='undefined'){
    alert('no');
};

Ziel ist es, den Benutzer von der Indexseite auf die Anmeldeseite umzuleiten, sofern er nicht bereits angemeldet ist. Hier ist die Variable localStorage.getItem("username")) momentan nicht definiert.

Es ist für eine iOS Phonegap App.

116
Gabriel

Zitat aus der Spezifikation :

Die Methode getItem (key) muss den aktuellen Wert zurückgeben, der dem angegebenen Schlüssel zugeordnet ist. Wenn der angegebene Schlüssel in der mit dem Objekt verknüpften Liste nicht vorhanden ist, muss diese Methode null zurückgeben.

Sie sollten tatsächlich gegen null prüfen.

if (localStorage.getItem("username") === null) {
  //...
}
260
UltraInstinct

Diese Methode hat bei mir funktioniert:

if ("username" in localStorage) {
    alert('yes');
} else {
    alert('no');
}
32
user3332298

pdate:

if (localStorage.hasOwnProperty("username")) {
    //
}

Eine andere Möglichkeit, die relevant ist, wenn nicht erwartet wird, dass der Wert eine leere Zeichenfolge, null oder ein anderer falscher Wert ist:

if (localStorage["username"]) {
    //
}
16
Derin

Die MDN-Dokumentation zeigt, wie die getItem -Methode implementiert ist:

Object.defineProperty(oStorage, "getItem", {
      value: function (sKey) { return sKey ? this[sKey] : null; },
      writable: false,
      configurable: false,
      enumerable: false
    });

Wenn der Wert nicht festgelegt ist, wird null zurückgegeben. Sie testen, ob es sich um undefined handelt. Überprüfen Sie, ob es stattdessen null ist.

if(localStorage.getItem("username") === null){
13
Quentin