ЛУЧШИЙ САЙТ ДЛЯ ВЕБ-РАЗРАБОТЧИКОВ
HTML5. Уроки для начинающих

HTML5 Веб хранилище


HTML веб-хранилище; лучше чем cookies.


Что такое HTML веб-хранилище?

С помощью веб-хранилища веб-программы могут сохранять данные локально в браузере пользователя.

До появления спецификации HTML5, данные приложений должны были сохраняться в куках (cookies), включенных в каждом запросе сервера. Веб-хранилище является более безопасным, и большие объёмы данных могут сохраняться локально, не влияя на работу веб-сайта.

В отличие от файлов cookie, лимит хранилища намного больший (по крайней мере 5 МБ), и информация никогда не передаётся на сервер.

Веб-хранилище - для каждого источника (для домена и протокола). Все страницы с одного источника (одинакового происхождения) могут сохранять и получать доступ к этим самым данным.


Поддержка браузерами

Цифры в таблице определяют первую версию браузера, которая полностью поддерживает веб-хранилище.

API
Веб-хранилище 4.0 8.0 3.5 4.0 11.5

HTML Объекты веб-хранилища

Веб-хранилище HTML обеспечивает два объекта для хранения данных на стороне клиента:

  • window.localStorage - сохраняет данные без даты окончания строка действия;
  • window.sessionStorage - сохраняет данные для одного сеанса (данные теряются при закрытии вкладки веб-браузера).

Перед использованием веб-хранилища проверьте поддержку браузера localStorage и sessionStorage:

if (typeof(Storage) !== "undefined") {
  // Код для localStorage/sessionStorage.
} else {
  // К сожалению, поддержка веб-хранилища отсутствует.
}

Объект localStorage

Объект localStorage сохраняет данные без даты окончания срока действия. Данные не будут удалены во время закрытия браузера и будут доступны на следующий день, неделю или год.

Пример

// Сохраняем
localStorage.setItem("lastname", "Smith");

// Возвращаем
document.getElementById("result").innerHTML = localStorage.getItem("lastname");
Попробуйте сами »

Объяснение примера:

  • Создаём пару localStorage name/value (имя/значение) с name='lastname' и value='Smith';
  • Получаем значение 'lastname' и вставляем его в элемент с id='result' (результат).

Приведённый выше пример также может быть написан таким образом:

// Сохраняем
localStorage.lastname = "Smith";
// Извлекаем
document.getElementById("result").innerHTML = localStorage.lastname;

Синтаксис для удаления элемента 'lastname' localStorage является следующим:

localStorage.removeItem("lastname");

Примечание: Пары name/value всегда сохраняются как строки. Не забывайте конвертировать их в другой формат, когда это необходимо!

Следующий пример подсчитывает количество нажатий пользователем кнопки. В этом коде строка значений преобразуется в число, чтобы иметь возможность увеличить счетчик:

Пример

if (localStorage.clickcount) {
  localStorage.clickcount = Number(localStorage.clickcount) + 1;
} else {
  localStorage.clickcount = 1;
}
document.getElementById("result").innerHTML = "Вы нажали кнопку " +
localStorage.clickcount + " time(s).";
Попробуйте сами »

Объект sessionStorage

Объект sessionStorage соответсвует объекту localStorage, кроме того, что он сохраняет данные лишь для одного сеанса. Данные удаляются, когда пользователь закрывает определённую вкладку веб-браузера.

В следующем примере подсчитывается количество раз, когда пользователь нажал кнопку в текущей сесии:

Пример

if (sessionStorage.clickcount) {
  sessionStorage.clickcount = Number(sessionStorage.clickcount) + 1;
} else {
  sessionStorage.clickcount = 1;
}
document.getElementById("result").innerHTML = "Вы нажали кнопку " +
sessionStorage.clickcount + " time(s) in this session.";
Попробуйте сами »