HTML5 LocalStorage: проверка наличия ключа
Почему это не работает?
if(typeof(localStorage.getItem("username"))=='undefined'){
alert('no');
};
Цель состоит в том, чтобы перенаправить пользователя с индексной страницы на страницу входа, если она еще не была зарегистрирована.
Здесь переменная localStorage.getItem("username"))
не определена на данный момент.
Это приложение для ios phonegap.
Ответы
Ответ 1
Цитата из спецификация:
Метод getItem (ключ) должен возвращать текущее значение, связанное с данным ключом. Если данный ключ не существует в списке, связанном с объектом, тогда этот метод должен вернуть null.
Фактически вы должны проверить null
.
if (localStorage.getItem("username") === null) {
//...
}
Ответ 2
Этот метод работает для меня:
if("username" in localStorage){
alert('yes');
} else {
alert('no');
}
Ответ 3
Документация MDN показывает, как реализуется метод getItem
:
Object.defineProperty(oStorage, "getItem", {
value: function (sKey) { return sKey ? this[sKey] : null; },
writable: false,
configurable: false,
enumerable: false
});
Если значение не установлено, оно возвращает null
. Вы тестируете, есть ли undefined
. Проверьте, есть ли вместо этого null
.
if(localStorage.getItem("username") === null){
Ответ 4
Другой способ:
if (localStorage["username"]) {
//
}