Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

20.3. Механизм сохранения userData в IE

В IE версии 5 и ниже поддерживается механизм сохранения данных на стороне клиента, доступный в виде нестандартного свойства

behavior
элемента документа. Использовать его можно следующим образом:

var memory = document.createElement("div"); // Создать элемент

memory.id = "_memory”; // Дать ему имя

memory.style.display = "none"; // He отображать его

memory.style.behavior = "url('#default#userData')"; // Присоединить свойство

document.body.appendChild(memory); // Добавить в документ

После того как для элемента будет определено поведение «userData», он получает новые методы

load
и
save.
Вызов метода
load
загружает сохраненные данные. Этому методу можно передать строку, напоминающую имя файла и идентифицирующую конкретный пакет хранящихся данных. После загрузки данных пары имя/значение становятся доступны в виде атрибутов элемента, получить которые можно с помощью метода
getAttribute
. Чтобы сохранить новые данные, необходимо установить атрибуты вызовом метода
setAttribute
и затем вызвать метод
save.
Удалить значение можно с помощью методов
removeAttribute
и
save.
Ниже приводится пример использования элемента
memory
, инициализированного выше:

memory.load("myStoredData"); // Загрузить сохраненные данные

var name = memory.getAttribute("username"); // Получить элемент данных

if (!name) { // Если он не был определен,

name = prompt("Как вас зовут?); // запросить у пользователя

memory.setAtttribute("username", name); // Установить как атрибут

memory.save("myStoredData"); // И сохранить до следующего раза

}

По умолчанию данные, сохраняемые с помощью механизма

userData
, имеют неограниченный срок хранения и сохраняются до тех пор, пока явно не будут удалены. Однако с помощью свойства
expires
можно определить дату, когда истечет срок хранения данных. Например, в предыдущий фрагмент можно было бы добавить следующие строки, чтобы указать, что срок хранения данных истечет через 100 дней:

var now = (new Date).getTime; // Текущее время в миллисекундах

var expires = now + 100 * 24 * 60 * 60 * 1000; // + 100 дней в миллисекундах

expires = new Date(expires).toUTCString; // Преобразовать в строку

memory.expires = expires; // Установить срок хранения

Данные, сохраняемые с помощью механизма

userData
в IE, доступны только для документов, хранящихся в том же каталоге, что и оригинальный документ, сохранивший их. Это более ограниченная область видимости, чем у cookies, которые также доступны документам в подкаталогах оригинального каталога. В механизме
userData
отсутствует какой-либо эквивалент атрибутов
path
и
domain
в cookies, позволяющий расширить область видимости данных.

Механизм

userData
позволяет сохранять гораздо большие объемы данных, чем cookies, но меньшие, чем объекты
localStorage
и
sessionStorage
.

Пример 20.3 реализует методы

getltem, setltem
и
removeltem
интерфейса
Storage
поверх механизма
userData
в IE. (Он не реализует такие методы, как
кеу
и
clear
, потому что механизм
userData
не предоставляет возможность выполнять итерации по всем хранящимся элементам.)

Пример 20.3. Частичная реализация интерфейса

Storage
на основе механизма
userData
в IE

function UserDataStorage(maxage) {

// Создать элемент документа и установить в нем специальное

// свойство behavior механизма userData, чтобы получить доступ

// к методам save и load.

var memory = document.createElement("div"); // Создать элемент

memory.style.display = ''none"; // He отображать его

memory.style.behavior = "url('#default#userData')"; // Присоединить свойство behavior

document.body.appendChild(memory); // Добавить в документ

// Если указано значение параметра maxage, хранить данные maxage секунд

if (maxage) {

var now = new Date.getTime; // Текущее время

var expires = now + maxage * 1000; // maxage секунд от текущего времени

memory.expires = new Date(expires).toUTCString;

}

// Инициализировать хранилище, загрузив сохраненные значения.

// Значение аргумента выбирается произвольно, но оно должно совпадать

// со значением, переданным методу save

memory.load("UserDataStorage”); // Загрузить сохраненные данные

this.getltem = function(key) { // Загрузить значения атрибутов

return memory.getAttribute(key) || null;

};

Поделиться:
Популярные книги

Страж

Иевлев Геннадий Васильевич
1. Страж
Фантастика:
научная фантастика
6.00
рейтинг книги
Страж

Дважды одаренный

Тарс Элиан
1. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Дважды одаренный

Моров. Том 5

Кощеев Владимир
4. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Моров. Том 5

Я бог. Книга XXXIX

Дрейк Сириус
39. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я бог. Книга XXXIX

Матабар. II

Клеванский Кирилл Сергеевич
2. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар. II

Черный Маг Императора 7 (CИ)

Герда Александр
7. Черный маг императора
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Черный Маг Императора 7 (CИ)

Эволюционер из трущоб. Том 8

Панарин Антон
8. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 8

Второгодка. Книга 4. Подавать холодным

Ромов Дмитрий
4. Второгодка
Фантастика:
героическая фантастика
альтернативная история
сказочная фантастика
5.00
рейтинг книги
Второгодка. Книга 4. Подавать холодным

Аспирант

Поселягин Владимир Геннадьевич
3. Рунный маг
Фантастика:
боевая фантастика
4.50
рейтинг книги
Аспирант

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Хозяин Стужи 5

Петров Максим Николаевич
5. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
6.60
рейтинг книги
Хозяин Стужи 5

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

Газлайтер. Том 31

Володин Григорий Григорьевич
31. История Телепата
Фантастика:
боевая фантастика
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Газлайтер. Том 31

Геном хищника. Книга девятая

Гарцевич Евгений Александрович
9. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Геном хищника. Книга девятая