March 20

HTML веб хранилище API

HTML-хранилище веб-хранилище; лучше, чем файлы cookie.


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

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

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

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

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


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

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

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

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

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

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

if (typeof(Storage) !== "undefined") { // Code for localStorage/sessionStorage. } else { // Sorry! No Web Storage support.. }

Объект локального хранилища

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

Пример

// Store localStorage.setItem("lastname", "Smith");

// Retrieve document.getElementById("result").innerHTML = localStorage.getItem("lastname");

Пример объяснен:

  • Создайте пару localStorage name/value с name="lastname" и value="Smith"
  • Извлеките значение "фамилия" и вставьте его в элемент с помощью id="result"

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

// Store localStorage.lastname = "Smith"; // Retrieve document.getElementById("result").innerHTML = localStorage.lastname;

Синтаксис для удаления элемента localStorage "фамилия" выглядит следующим образом:

localStorage.removeItem("lastname");

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

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

Пример

if (localStorage.clickcount) { localStorage.clickcount = Number(localStorage.clickcount) + 1; } else { localStorage.clickcount = 1; } document.getElementById("result").innerHTML = "You have clicked the button " + localStorage.clickcount + " time(s).";

Объект sessionStorage

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

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

Пример

if (sessionStorage.clickcount) { sessionStorage.clickcount = Number(sessionStorage.clickcount) + 1; } else { sessionStorage.clickcount = 1; } document.getElementById("result").innerHTML = "You have clicked the button " + sessionStorage.clickcount + " time(s) in this session.";