JavaScript интерфейс Storage
Web Storage APIОписание интерфейса
Интерфейс Storage, принадлежащий API веб-хранилища предоставляет доступ к локальному объекту хранения (localStorage), или объекту хранения текущего сеанса (sessionStorage) для определенного домена (создавшего объект хранения источника):
- sessionStorage - поддерживает отдельную область хранения для каждого заданного источника, доступную на время сеанса страницы (пока открыт браузер, включая перезагрузку и восстановление страницы).
- localStorage - делает то же самое, но сохраняется даже при закрытии и повторном открытии браузера.
Эти механизмы доступны через свойства объекта Window sessionStorage и localStorage (точнее говоря, в браузерах объект Window реализует объекты WindowLocalStorage и WindowSessionStorage, которые содержат свойства localStorage и sessionStorage). Вызов одного из этих свойств создаст экземпляр объекта Storage, с помощью которого можно устанавливать, извлекать и удалять элементы данных из хранилища.
Для localStorage и sessionStorage для каждого домена используется отдельный объект хранения — они функционируют и управляются отдельно друг от друга.
Обращаю Ваше внимание, что объем веб-хранилища ограничен размером, и может составлять от 5 до 10 мегабайт, в зависимости от производителя браузера. Это значительно больший объем места на диске в сравнении с cookie, которому доступно всего 4 Кбайта.
Приватный просмотр (режим инкогнито)
Большинство современных браузеров поддерживают опцию конфиденциальности "инкогнито", "приватный просмотр", или что-то подобное, что не хранит такие данные, как история и файлы cookie. Это принципиально несовместимо с веб-хранилищем по очевидным причинам, по этой причине поставщики браузеров экспериментируют с различными сценариями устранения этой несовместимости.
Большинство браузеров выбрали стратегию, в которой API хранилища по-прежнему доступны и кажутся полностью функциональными, с той большой разницей, что все сохраненные данные стираются после закрытия браузера. Для этих браузеров все еще существуют различные интерпретации того, что должно быть сделано с существующими сохраненными данными (из обычной сессии просмотра). Затем есть некоторые браузеры, например, Safari, которые выбрали такое решение при котором хранилище доступно, но пусто и имеет квоту 0 байт, что фактически делает невозможным запись в него данных.
Разработчики должны знать об этих различных реализациях и учитывать их при разработке веб-сайтов в зависимости от API веб-хранилища.
Методы интерфейса
Метод | Описание | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|---|
clear() | При вызове производит очистку всех ключей из объекта хранилища (объекта Storage). | Да | Да | Да | Да | 8.0 | Да |
getItem() | При передаче имени ключа возвращает значение этого ключа, или null, если ключ не существует в данном объекте хранилища (объекте Storage). | Да | Да | Да | Да | 8.0 | Да |
key() | При передаче целого нумерованного значения числа n возвращает имя n-го ключа в хранилище (объекта Storage). | Да | Да | Да | Да | 8.0 | Да |
removeItem() | При передаче имени ключа удаляет этот ключ из объекта хранилища (при наличии). | Да | Да | Да | Да | 8.0 | Да |
setItem() | При передаче имени и значения ключа этот ключ добавляется в хранилище (объект Storage) или обновляется, если он уже существует. | Да | Да | Да | Да | 8.0 | Да |
Свойства интерфейса
Свойство | Описание | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|---|
length | Возвращает целое число, представляющее число элементов данных, находящихся в хранилище (объекте Storage). | Да | Да | Да | Да | 8.0 | Да |