свойстве document. cookie пары имен/значений из cookie-наборов, которые мо — гут быть использованы сценариями на Web-странице. Прежде чем вы сможете использовать значение cookie-набора, вам потребуется извлечь значение из стро —
ки всех имеющихся имен и значений cookie-набора в свойстве document. cookie.
Глава 8. JavaScript 43 1
ПРАКТИКУМ
Приведенная ниже JavaScript-функция возвращает значение отдельного cookie — набора из свойства cookie объекта документа:
function cookieValue (FirstChar)
{
// Пары «имя/значение» cookie-набора в свойстве document. cookie
// отделены друг от друга точками с запятой. Найти индекс первой
// точки с запятой после начала значения cookie-набора,
var LastChar = document. cookie. indexOf («;», FirstChar);
Функция unescape () в последнем операторе функции cookieValue () преоб — разовывает управляющие последовательности в значении cookie-набора в соот — ветствующие им ASCII-символы. Вспомните: в предыдущем практикуме при сохра —
нении значения cookie-набора вы пользовались функцией escape() . В результате
браузер сохранил «kki@NVBizNet. com» В COOkie-фаЙле каК «kki%40NVBizNet. com».
Функция unescape( ) преобразовывает управляющую последовательность «%40″
обратно в символ @.
Прежде чем вы сможете вызвать функцию cookieValue о, вы должны узнать,
где в строке всех пар имен/значений cookie-набора в document. cooki e начинает —
ся значение требуемого cookie-набора. Следующая функция найдет первый сим — вол в значении cookie-набора, имя которого вы передадите ей в параметре
CookieName. Вызвав функцию cookieValue (), функция getCookieValue () вер — нет значение cookie-набора, соответствующее имени, которое вы передали ей в параметре CookieName:
function getCookieValue (CookieName)
{
CookieName = CookieName + «=»;
var NameLength = CookieName. length;
var CookieLength = document. cookie. length;
var FirstChar = 0;
var LastChar = 0;
while (FirstChar
{
LastChar = FirstChar + NameLength;
if (document. cookie. substring(FirstChar, LastChar) == CookieName)
return cookieValue (LastChar);
// Перейти на 1 символ за пробел между парами «имя/значение» cookie-набора
Следовательно, чтобы извлечь значения cookie-набора из свойства
document. cookie по имени, сначала объявите между начальным и конечным дескрипторами сценария ( ) в заголовке Web-страницы функ —
43 2 Глава 8. JavaScript
ЦИИ copkieValu e () И getCookieValu e () . Посл е ЭТОГО ВЫ СМОЖете ВСТавИТЬ СЦе —
нарий, аналогичный приведенному ниже, в тело Web-страницы, чтобы извлечь и отобразить имя, фамилию и адрес e-mail из cookie-набора, которые были сохра — нены в предыдущем практикуме (см. рис. 8.8).
Удаление cookie-набора из cookie-файла
Когда браузер просматривает cookie-файл в поисках cookie-наборов для добав — ления в свойство cooki e объекта документа текущей Web-страницы, он удаляет все cookie-наборы, срок действия которых истек. Помните: когда вы сохраняете cookie-набор, вы сохраняете дату истечения срока действия вместе с именем и значением cookie-набора. Поскольку каждый cookie-набор увеличивает размер cookie-файла и cookie-файл может содержать максимум 200 cookie-наборов на каж — дый домен, следует удалять cookie-наборы, которые больше вам не нужны. Посколь —
ку Web-браузер автоматически удаляет из cookie-файла cookie-наборы с истекшим сроком действия, просто установите дату истечения срока действия cookie-набора, который вы хотите удалить, равной дате и времени когда-нибудь в прошлом.
ПРАКТИКУМ
Объявив приведенную ниже функцию между начальным и конечным дескрипто- рами сценария ( ) в HTML-коде своей Web-страницы (пред — почтительно в заголовочном разделе), вы сможете вызывать функцию
deietecookie() всякий раз, когда вам понадобится удалить cookie-набор:
Функция deieteCookie() «заканчивает» срок действия cookie-набора путем установки даты истечения срока действия cookie-набора равной самой ранней
применимой дате (одной секунде пополуночи 1 января 1970 года). Поскольку
сейчас правильное местное время на любом компьютере давно «перевалило» за 1
января 1970 года, вызов deietecookie() приведет к тому, что браузер удалит из cookie-файла тот cookie-набор, имя которого вы передадите функции в параметре CookieName. Предположим, например, вы ранее сохранили cookie-набор с име —