Получение значения 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.
Если же поиск оказывается неудачным, функция findCookie возвращает пустую строку.
Как пользоваться функцией findCookie?
Во-первых, с помощью этой функции вы можете проверить, установлен ли для данного документа cookie с заданным именем:
if(findCookie("Visit") == "")
{
// cookie с именем Visit установлен
. . .
}
else
{
// cookie с именем Visit не установлен
. . .
}
Для того чтобы записать в текстовую переменную значение параметра cookie с заданным именем, вы должны сделать следующее:
var szVisitValue = findCookie("Visit");
Как видите, пользоваться функцией findCookie достаточно просто.