Шрифт:
this.getltem = function(name) { return cookies[name] || null; };
// Сохраняет значение
this.setltem = function(key, value) {
if (!(key in cookies)) { // Если cookie с таким именем не существует
keys.push(key); // Добавить ключ в массив ключей
this.length++; // И увеличить значение length
}
// Сохранить пару имя/значение в множестве cookies.
cookies[key] = value;
// Установить cookie.
// Предварительно декодировать значение и создать строку
// имя=кодированное-значение
var cookie = key + "=" + encodeURIComponent(value);
// Добавить в строку атрибуты cookie
if (maxage) cookie += ";
max-age=" + maxage;
if (path) cookie += ";
path=" + path;
// Установить cookie с помощью свойства document.cookie
document.cookie = cookie;
}
// Удаляет указанный cookie
this.removeItem = function(key) {
if (!(key in cookies)) return; // Если не существует, ничего не делать
// Удалить cookie из внутреннего множества cookies
delete cookies[key];
// И удалить ключ из массива имен.
// Это легко можно было бы сделать с помощью метода indexOf массивов,
// определяемого стандартом ES5.
for(var і = 0; і < keys.length; i++) { // Цикл по всем ключам
if (keys[i] === key) { // При обнаружении ключа
keys.splice(i,1); // Удалить его из массива,
break;
}
}
this.length--; // Уменьшить значение length
// Наконец фактически удалить cookie, присвоив ему пустое значение
// и истекший срок хранения.
document.cookie = key + "=; max-age=0";
};
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
, инициализированного выше: