Сценарии JavaScript в активных страницах Web

Получение значения 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 достаточно просто.



Содержание раздела