Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи мови JavaScript.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.04 Mб
Скачать

7.1.5. Обмеження на використання cookie

На використання cookie накладаються визначені обмеження. який перераховані нижче:

  • усього може бути створено не більш ніж 300 cookie;

  • кожне cookie не може перевищувати по своєму розмірі 4 Кбайт;

  • для кожного домена може бути створено не більш 20 cookie

Якщо зазначені значення будуть перевищені, браузер може видалити самі старі cookie або обрізати значення параметрів cookie.

7.2. Декілька прикладів використання cookie

У цьому поділі на прикладі конкретних сценаріїв JavaScript буде показано, як можна використовувати cookies для рішення різноманітних практичних задач.

7.2.1. Фіксація повторних провідин сторінки

У першому прикладі документ HTML містить форму з двома кнопками.

Якщо натиснути на кнопку Go to page, сценарій JavaScript створить новий документ HTML. Зовнішній вигляд цього документа залежить від того, скільки разів користувач натискав на цю кнопку.

Кнопка Remove All Cookies призначена для видалення cookie, створеного в документі HTML.

Коли нажимается кнопка Go to page у перший разом, cookie ще не створено. При цьому створюється документ HTML.

В другий і наступні рази зовнішній вигляд документа змінюється.

Тепер з'являється новий заголовок, а також уміст параметрів cookie з іменами Visit і Count.

При кожних нових провідинах значення параметра Count буде збільшуватися на одиницю. Якщо ж у документі натиснути кнопку Remove All Cookies, підрахунок провідин почнеться наново.

Вихідний текст документа HTML поданий у листинге 7.1.

Листинг 7.1. Файл chapter7/Again/Again. html

<HTML>

<HEAD>

<TITLE>Cookies demo</TITLE>

<SCRIPT LANGUAGE="JavaScript">

<!--

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;

}

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 "";

}

function removeCookie(szName)

{

var dtExpires = new Date();

dtExpires.setTime(dtExpires.getTime() - 1);

var szValue = findCookie(szName);

document.cookie = szName + "=" + szValue + "; expires=" + dtExoires.toGMTString();

}

function btnClick()

{

if(findCookie ("Visit") == "")

{

addCookie("Visit","Alexandr_Frolov",10);

addCookie("Count","0",10);

document.write("<H2>You are welcome!</H2>");

}

else

{

var szCnt = findCookie("Count");

var i=0;

if(szCnt != "")

{

i = szCnt;

i++;

szCnt = i.toString();

addCookie("Count", szCnt,10);

}

document.write("<H2>You are welcome AGAIN!</H2>");

document.write(document.cookie);

}

}

//-->

</SCRIPT>

</HEAD>

<BODY BGCOLOR=white>

<Hl>Visit our page!</Hl>

<FORM NAME="TestForm">

<P><INPUT TYPE="button" VALUE="Go to page" onClick="btnClick();">

<P><INPUT TYPE="button" VALUE="Remove All Cookies"

onClick="removeCookie('Count'); removeCookie('Visit')">

</FORM>

</BODY>

</HTML>

Функції addCookie, findCookie і removeCookie, визначені в цьому документі, знайомі. Вони призначені відповідно для створення cookie, витяги значення заданого параметра cookie і видалення cookie.

Функція bInClick визивається, коли користувач натискає у формі кнопку з написом Go to page.

Насамперед ця функція шукає параметр cookie з ім'ям Visit. Якщо такий параметр не знайдений, рахується, що сторінка посещается в перший разом. У цьому випадку функція btnClick створює параметри cookie з іменами Visit і Count, а потім формує текст документа HTML із запрошенням.

addCookie("Visit","Alexandr_Frolov",10);

addCookie("Count","0",10);

document. write("<H2>You are welcome! </H2>");

У тому випадку, коли користувач відвідує сторінку повторно, параметр cookie з ім'ям Visit вже існує. У цьому випадку функція btnClick намагається знайти параметр з ім'ям Count і одержати його значення:

var szCnt = findCookie("Count");

Це значення потім збільшується на одиницю і записується обернено в параметр cookie з ім'ям Count:

i = szCnt;

i++;

szCnt = i. toString();

addCookie("Count",szCnt,10);

Завершуючи свою роботу, функція btnClick записує запрошення для користувачів , що відвідали повторно сторінку , і відображає уміст властивості document. cookie:

document.write("<H2>You are welcome AGAIN! </H2>");

document. write(document. cookie);

Оброблювач події onClick кнопки з написом Remove All Cookies викликає функцію removeCookie для параметрів cookie з іменами Count і Visit, удаляя їх:

<imput TYPE="button" VALUE="Remove All Cookies"

0nClick="removeCookie ('Count'); removeCookie ('Visit')">