JavaScript. Подробное руководство, 6-е издание
Шрифт:
var all = document.cookie; // Получить все cookies в одной строке
if (all === "") // Если получена пустая строка
return cookies; // вернуть пустой объект
var list = all.split(";”); // Разбить на пары имя/значение
for(var і = 0; і < list.length; i++) { // Для каждого cookie
var cookie = list[і]:
var p = cookie.indexOf("="); // Отыскать первый знак =
var name = cookie, substrings, p); // Получить имя cookie
var value = cookie.substring(p+1); // Получить значение cookie
value = decodeURIComponent(value); // Декодировать значение
cookies[name] = value; // Сохранить имя и значение
}
return cookies;
});
// Собрать имена cookies в массиве
var keys = [];
for(var key in cookies) keys.push(key);
// Определить общедоступные свойства и методы Storage API
// Количество хранящихся cookies
this.length = keys.length; *
// Возвращает имя n-го cookie или null, если n вышло за диапазон индексов
this.key = function(n) {
if (n < О И n >= keys.length) return null;
return keys[n];
};
// Возвращает значение указанного cookie или null,
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";
};
Поделиться:
Популярные книги
Четники. Королевская армия
Документальная литература:
биографии и мемуары
публицистика
5.00
рейтинг книги
Ваше Сиятельство 7
7. Ваше Сиятельство
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Глубокий космос
9. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Глэрд IX: Легионы во Тьме
9. Глэрд
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 2
2. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Бандит 2
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Неучтенный элемент. Том 3
3. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Газлайтер. Том 10
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Камень Книга седьмая
7. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Апокриф
10. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Поводырь
3. Ботаник
Фантастика:
фэнтези
6.17
рейтинг книги
Газлайтер. Том 17
17. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Начало
1. Второй шанс
Фантастика:
фэнтези
5.00
рейтинг книги
Геном хищника. Книга четвертая
4. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00