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

7.2.2. Записна книжка Cookies Notepad

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

При першому завантаженні документа HTML із записною книжкою вікно редагування залишається порожнім. Можна набрати тут будь-який текст і записати його в cookie, натиснувши кнопку Store text. Якщо тепер закрити документ HTML і відчинити його знову, набраний раніше текст з'явиться у вікні редагування.

Для того щоб видалити текст і cookie, достатньо натиснути кнопку Clear text. Вихідний текст документа HTML із записною книжкою Cookies Notepad поданий у листинге 7.2.

Листинг 7.2. Файл chapter7/Notebook/Notebook. 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 + "=" + escape (szValue) + ";

expires = " + dtExpiryDate;

}

function findCookie(szName)

{

var i = 0;

var nStartPosition = 0;

var nEndPosition = 0;

var szCookieString = document. cookie;

var szTemp = "";

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;

szTemp = document.cookie.substring(nStartPosition, nEndPosition);

return unescape(szTemp);

break;

}

i++;

}

return "";

}

function removeCookie(szName)

{

var dtExpires = new Date();

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

var szValue = findCookie(szName);

document.cookie = szName + "=" + szVaiue + "; expires=" + dtExpires.toGMTString();

}

function btnClick()

{

addCookie("MyText",TestForm.Comment.value,10);

}

//-->

</SCRIPT>

</HEAD>

<BODY BGCOLOR=white>

<Hl>Cookies Notepad</Hl>

<FORM NAME="TestForm">

<P><TEXTAREA NAME=" Comment"

ROWS="5" COLS="25" WRAP="physical">

</TEXTAREA>

<P><INPUT TYPE="button" VALUE="Store text" onClick="btnClick();">

<INPUT TYPE="button" VALUE="Clear text"

onClick="removeCookie('MyText');TestForm.Comment.value=''">

</FORM>

<SCRIPT LANGUAGE="JavaScript">

<!--

var szMyText="";

szMyText = findCookie("MyText");

if(szMyText != "")

{

TestForm.Comment.value = szMyText;

}

//-->

</SCRIPT>

</BODY>

</HTML>

Функція addCookie, використана нами в цьому документі, має одна особливість: перед записом текстового рядка в параметр cookie вона виконує її кодировку у форматі URL, викликаючи для цього функцію escape:

document. cookie = szName + "=" + escape(szValue) + ";

expires=" + dtExpiryDate;

Це необхідно з тієї причини, що введений у вікні редагування текст може містити прогалини і будь-які інші символи. Аналогічні зміни ми внесли й у функцію findCookie. Ця функція повертає значення, перекодоване в звичайний текст функцією unescape, що виконує дії, обернені стосовно функції escape:

SzTemp = document. cookie. substring ( nStartPosition, nEndPosition);

return unescape(szTemp);

Коли користувач натискає кнопку Store text, визивається функція btnClick:

function btnClick()

{

addCookie("MyText", TestForm. Comment. value, 10);

}

Ця функція просто записує в параметр cookie з ім'ям MyText текстовий рядок, витягнутий із многострочного поля редагування TestForm. Comment. value.

При видаленні тексту кнопкою Clear text визивається функція removeCookie, що видаляє параметр cookie з ім'ям 'MyText, а також записується порожній рядок у вікно многострочного редагування:

<INPUT TYPE="button" VALUE="Clear text"

onClick = "removeCookie('MyText');

TestForm. Comment. value= ' ' ">

У самому кінці тіла документа HTML знаходиться невеличкий фрагмент сценарію JavaScript, що запускается відразу після завантаження цього документа:

var szMyText="";

SzMyText = findCookie("MyText");

if(szMyText != "")

{

TestForm. Comment. value = szMyText;

}

Цей фрагмент намагається одержати значення параметра cookie з ім'ям MyText. Якщо це йому вдасться і функція findCookie повертає непустую рядок, отриманий рядок записується у вікно многострочного поля редагування TestForm. Comment.value.

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

Можливо подивитися системний файл, що береже дані cookie. Для цього треба відчинити каталог Temporary Internet Files, розташований у системному каталозі Microsoft Windows 95 або Microsoft Windows NT. Там повинний бути файл з ім'ям Notebook\. Можна скопіювати цей файл, наприклад, на поверхню робочого столу і відчинити для перегляду будь-яким текстовим редактором. Там - приблизно таке:

MyText

This%20is%20sample%20text. %OD%OA%u042D%u0442%u043E%20%u0442%u

0435%u043A%u0441%u0442%2C%20%u043A%u043E%u0442%u043E%u044C%u

44B%u0439%20%u044F%20%u043D%u0430%u0431%u0440%u0430%u043B%20%

u0434%u043B%u044F%20%u043F%u0440%u0438%u043C%u0435%u0440%u043

0. %OD%OA%OD%OA%u0410%u043B%u0435%u043A%u0441%u0430%u043D%u043

4%u0440%20%u0424%u0440%u043E%u043B%u043E%u0432.

~~localhttps://studfile.net/E:\JavaScript\Source\chapter7\Notebook\

0

642302464

29173566

2120102016

29171554

*

На самому початку файла очевидно ім'я MyText параметра cookie. На таких рядках до рядка ~~1осаl~~ розташоване значення параметра MyText. відповідному тексту, показаному на мал. 7.4.

Слідом за рядком ~~local~~ йде локальна адреса URL документа й інші параметри cookies, такі, як дата, по досягненні якої браузер видалить cookie.

Якщо видалити файл Notebook\ і потім відчинити документ HTML, многострочное вікно редагування буде порожнім. Видалення цього файла видаляє і розташоване в ньому cookie.