Pourquoi ça ne marche pas?
if(typeof(localStorage.getItem("username"))=='undefined'){
alert('no');
};
L'objectif est de rediriger l'utilisateur de la page d'index vers la page de connexion s'il n'est pas déjà connecté. Ici, la variable localStorage.getItem("username"))
n'est pas définie pour le moment.
C'est pour une application phonegap ios.
Citant le spécification :
La méthode getItem (key) doit renvoyer la valeur actuelle associée à la clé donnée. Si la clé donnée n'existe pas dans la liste associée à l'objet, cette méthode doit renvoyer null.
Vous devriez en fait vérifier par rapport à null
.
if (localStorage.getItem("username") === null) {
//...
}
Cette méthode a fonctionné pour moi:
if ("username" in localStorage) {
alert('yes');
} else {
alert('no');
}
Mise à jour:
if (localStorage.hasOwnProperty("username")) {
//
}
Une autre façon, pertinente lorsque la valeur ne devrait pas être une chaîne vide, une valeur nulle ou toute autre valeur de fausseté:
if (localStorage["username"]) {
//
}
Le documentation MDN montre comment la méthode getItem
est implémentée:
Object.defineProperty(oStorage, "getItem", {
value: function (sKey) { return sKey ? this[sKey] : null; },
writable: false,
configurable: false,
enumerable: false
});
Si la valeur n'est pas définie, il retourne null
. Vous testez pour voir si c'est undefined
. Vérifiez si c'est null
à la place.
if(localStorage.getItem("username") === null){