|
енарии JavaScript
Второй способ предполагает использование свойства document.cookie. Это
свойство мы упомянули, рассказывая о свойствах и методах объекта document,
создаваемого для документа HTML, загруженного в окно браузера.
В общем виде сценарий JavaScript может создать cookie следующим образом:
document.cookie =
“Имя=Значение;
Здесь мы просто записываем в свойство cookie объекта document текстовую
строку, определяющую cookie.
Для пересчета текущей даты в формат GMT в сценариях JavaScript можно
использовать встроенные функции, о чем мы скоро расскажем.
В качестве примера приведем исходный текст функции addCookie, которую мы
будем использовать в своих сценариях для создания cookie:
function addCookie(szName,szValue,dtDaysExpires)
{
var dtExpires = new Date();
var dtExpiryDate = "";
dtExpires.setTime(dtExpires.getTime() +
dtDaysExpires * 24 * 60 * 60 * 1000);
dtExpiryDate = dtExpires.toGMTString();
document.cookie =
szName + "=" + szValue + "; expires=" + dtExpiryDate;
}
Функция addCookie получает три параметра.
Через параметр szName передается имя параметра, хранящегося в cookie.
Параметр szValue определяет значение этого параметра cookie. Что же касается
последнего параметра с именем dtDaysExpires, то он задает интервал времени по
отношению к моменту создания cookie, когда этот cookie необходимо удалить.
Самое сложное в функции addCookie - это определение даты удаления cookie и
преобразование этой даты в формат GMT. Данная задача решается следующим образом.
Прежде всего функция addCookie создает объект класса Date с помощью
ключевого слова new:
var dtExpires = new Date();
Записанная таким образом в переменную dtExpires дата соответствует моменту
вызова функции addCookie.
Далее с помощью метода getTime функция addCookie определяет текущую дату в
миллисекундах и прибавляет к результату значение параметра dtDaysExpires,
полученное функцией, умноженное на константу (24 * 60 * 60 * 1000):
dtExpires.getTime() + dtDaysExpires * 24 * 60 * 60 * 1000
Константа представляет собой количество часов в сутках, умноженное на
количество минут в часе, затем на количество секунд в минуте, и, наконец, на
количество миллисекунд в секунде.
Результат вычислений записывается при помощи метода setTime в переменную
даты dtExpires. Теперь здесь хранится дата автоматического уничтожения cookie
браузером. Осталось лишь преобразовать эту дату в формат GMT.
Такое преобразование нетрудно сделать с помощью специально предназначенного
для этого метода toGMTString, возвращающего текстовую строку в нужном нам
формате:
dtExpiryDate = dtExpires.toGMTString();
Теперь нам остается только сформировать текстовую строку определения cookie
и записать ее в свойство document.cookie:
document.cookie =
szName + "=" + szValue + "; expires=" + dtExpiryDate;
На этом создание cookie завершено.
Теперь, когда в вашем распоряжении есть функция addCookie, создание cookie
представляет собой очень простую задачу. Например, в следующей строке мы
создаем cookie с именем Count, значением 0, причем через 10 дней браузер
автоматически удалит этот cookie:
addCookie("Count","0",10);
При необходимости использования других параметров cookie, таких как path или
domain, вы можете немного дополнить текст функции addCookie. С этой задачей вы
легко справитесь самостоятельно.
Получение значения cookie
Итак, вы научились создавать cookie в сценариях JavaScript. Теперь решим
другую задачу - определение значения параметров cookie.
Эта задача сводится к простому сканированию текстовой строки, полученной
следующим образом:
var szCookieString = document.cookie;
В этой строке вам нужно найти подстроку “Имя=Значение;”, а затем извлечь
полученное значение.
Для облегчения этой работы вы можете воспользоваться функцией findCookie.
Исходный текст этой функции приведен ниже:
function findCookie(szName)
{
var i = 0;
var nStartPosition = 0;
var nEndPosition = 0;
var szCookieString = document.cookie;
while(i <= szCookieString.length)
{
nStartPosition = i;
nEndPosition = nStartPosition + szName.length;
if(szCookieString.substring(
nStartPosition,nEndPosition) == szName)
{
nStartPosition = nEndPosition + 1;
nEndPosition =
document.cookie.indexOf(";",nStartPosition);
if(nEndPosition < nStartPosition)
nEndPosition = document.cookie.length;
return document.cookie.substring(
nStartPosition,nEndPosition);
break;
}
i++;
}
return "";
}
После извлечения строки из свойства document.cookie и записи этой строки в
переменную szCookieString функция findCookie организует цикл по всем символам
этой строки. Условием завершения цикла является просмотр всех szCookieString.
length символов.
Сравнивая имя параметра с подстрокой, извлеченной из строки szCookieString
при помощи метода substring, функция findCookie пытается найти нужный параметр.
Если такая попытка оказывается успешной, функция findCookie пропускает символ
присваивания, извлекая значение параметра, ограниченное символом точка с
запятой. Это значение возвращается функцией findCookie.
Если же поиск оказывается неу
|
|