Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

"E-mail: *****@***apc. org" +

"WWW: http://www. *****/~frolov" +

"Created with Microsoft Visual J++ Version 1.0";

}

//

// getParameterInfo

// Метод, возвращающий описание параметров

//

public String[][] getParameterInfo()

{

String[][] info =

{

{ PARAM_Str1, "String", "Text string to write" },

{ PARAM_Font1, "String", "Text font" },

{ PARAM_Type1, "String", "Font type" },

};

return info;

}

//

// init

// Вызывается во время инициализации аплета

//

public void init()

{

// Рабочая переменная для получения параметров

String param;

// Получение параметров и сохранение

// их значений в полях класса

// Строки, которые будут выведены в окно аплета

param = getParameter(PARAM_Str1);

if (param!= null)

m_Str1 = param;

// Шрифты для отображения строк

param = getParameter(PARAM_Font1);

if (param!= null)

m_Font1 = param;

// Начертание шрифтов

param = getParameter(PARAM_Type1);

if (param!= null)

m_Type1 = param;

}

//

// paint

// Метод paint, выполняющий рисование в окне аплета

//

public void paint(Graphics g)

{

// Начальная координата для вывода по вертикали

int yStart = 20;

// Текущая координата для вывода строки

int yCurrent = 20;

// Определяем текущие размеры окна аплета

Dimension dimAppWndDimension = size();

// Выбираем в контекст отображения желтый цвет

g. setColor(Color. yellow);

// Закрашиваем внутреннюю область окна аплета

g. fillRect(0, 0,

НЕ нашли? Не то? Что вы ищете?

dimAppWndDimension. width - 1,

dimAppWndDimension. height - 1);

// Выбираем в контекст отображения черный цвет

g. setColor(Color. black);

// Рисуем рамку вокруг окна аплета

g. drawRect(0, 0,

dimAppWndDimension. width - 1,

dimAppWndDimension. height - 1);

// Получаем стиль шрифта и выбираем шрифт

// в соответствии с этим стилем

if(m_Type1.equals("Bold"))

g. setFont(new Font(m_Font1, Font. BOLD, 25));

else if(m_Type1.equals("Italic"))

g. setFont(new Font(m_Font1, Font. ITALIC, 25));

else if(m_Type1.equals("Plain"))

g. setFont(new Font(m_Font1, Font. PLAIN, 25));

// Отступ для первой строки

yCurrent += yStart;

// Рисуем первую строку

g. drawString(m_Str1, 10, yCurrent);

}

}

7 Применение COOKIE

Возможно, изучая настройки браузера вы сталкивались с таким понятием, как cookie.

Что это такое?

Скажем сразу, что с кулинарным искусством это связано мало, хотя некоторую аналогию все же можно провести. Говоря кратко, cookie представляет собой свойство документа HTML. Данные cookie физически хранятся локально на компьютере пользователя, загрузившего к себе этот документ, в виде специального системного файла. С помощью cookie пользователь может настроить, или “приготовить” по собственному вкусу документ HTML, если для него предусмотрена такая настройка.

Проще всего представить себе cookie как набор строковых параметров, каждый из которых имеет имя и значение. Сценарий JavaScript может создавать cookie для документа HTML, определяя в нем произвольное количество параметров и задавая для них произвольные значения. После создания такой набор параметров становится принадлежностью данного конкретного документа HTML и может быть проанализирован, изменен или удален сценарием JavaScript.

Как мы уже говорили, основное, для чего нужно cookie - это для того, чтобы дать пользователю возможность настроить под свои потребности интерфейс активных документов HTML. Эти настройки могут анализироваться или не анализироваться сервером Web, но в любом случае они хранятся у пользователя. Настройки, разумеется, пропадут, если пользователь, скажем, отформатирует свой жесткий диск. После этого параметры настраиваемого документа HTML придется задавать заново.

Конечно, задачу индивидуальной настройки параметров страниц можно было бы решить и другими способами, например, при помощи расширений сервера Web, таких как программы CGI или приложения ISAPI. Для этого на сервере Web должна быть установлена база данных, хранящая настройки для всех зарегистрированных в ней пользователей.

В этом случае расширение сервера Web может динамически создавать настраиваемые документы HTML, используя для определения внешнего вида страниц параметры, хранящиеся в базе данных.

Наличие базы данных настройки пользователей усложняет сопровождение сервера Web, и потому неприемлемо во многих случаях. Например, если ваш сервер Web виртуальный и расположен на дисках сервера какого-либо провайдера Internet, создание базы данных может превратиться в трудно преодолимую проблему.

Возлагая на пользовательский браузер задачу хранения настроек отдельных документов HTML, вы сильно упрощаете задачу организации настройки диалогового интерфейса. А для этого как раз нужны cookie и сценарии JavaScript.

Еще одно практическое применение cookie - хранение товара, выбранное посетителем вашего сервера Web, выполняющего роль виртуального магазина. Покупатель может выбирать разный товар на разных страницах сервера, при этом полный заказ может вначале быть сформирован и сохранен в cookie, а затем по явному запросу пользователя отправлен на сервер.

Среди других применений cookie можно отметить сетевые игры. Вы можете, например, хранить в cookie текущее состояние игры или другие параметры.

Выполнение основных операций с cookie

Рассмотрим основные операции с cookie, такие как создание cookie, получение и изменение значений параметров cookies, а также удаление cookie.

Создание cookie

Существуют два способа создание cookie, первый из которых используется расширениями сервера Web, а второй - сценариями JavaScript. Мы рассмотрим оба этих способа.

Первый способ: создание cookie расширением сервера Web

Для того чтобы создать cookie первым способом, расширение сервера Web обычно добавляет в заголовок HTTP динамически создаваемого документа HTML поле с именем Set-Cookie. В этом поле определяются имена и значения параметров cookie.

Когда расширение сервера Web вызывается из документа HTML, имеющего cookie, параметры cookie предаются этому расширению через поле Cookie заголовка HTTP и могут быть проанализированы.

Заголовок HTTP, предназначенный для создания cookie, выглядит следующим образом:

Set-Cookie: Имя=Значение; expires=Дата_GMT;

path=Адрес_URL; domain=Домен; secure

Описание отдельных полей заголовка Set-Cookie приведено ниже:

Поле

Описание

Имя

Произвольное имя параметра, определенного в cookie. Здесь вы можете использовать любую строку, лишь бы в ней не было пробелов, запятых и двоеточий. В том случае, когда имя должно содержать перечисленные выше символы, используйте кодировку URL

Значение

Текстовая строка значений параметров. В этой строке не должно быть пробелов, запятых и двоеточий, поэтому вы должны использовать для нее кодировку URL

expires

Дата автоматического удаления cookie по Гринвичу. Если эта дата не указана, а параметр expires отсутствует, cookie будет удалено сразу после того, как браузер закончит сеанс связи с сервером Web

domain

Доменная часть адреса URL, для которой действует данный cookie. Если этот параметр не указан, то по умолчанию используется доменный адрес URL документа HTML, где был установлен cookie

path

Часть адреса URL, задающая путь к документу HTML, для которой действует данный cookie. Если этот параметр не указан, то по умолчанию используется адрес URL документа HTML, где был установлен cookie

secure

Если указано это поле, данные cookie необходимо предавать только с использованием защищенного протокола SSL. Такой протокол используется серверами HTTPS

Все поля, кроме первых двух (Имя и Значение), необязательны.

Дата должна быть записана в формате День_недели, ДД-Мес-ГГ ЧЧ:ММ:СС GMT, где:

·  День_недели - английское трехбуквенное сокращение названия дня недели (например, Mon);

·  ДД - номер дня недели;

·  Мес - английское трехбуквенное сокращение названия месяца (например, Jun);

·  ГГ - две последние цифры года;

·  ЧЧ - часы;

·  ММ - минуты;

·  СС - секунды

Например, дата может быть указана так:

Mon, 07-Jun-93 14:45:00 GMT

Сделаем небольшое замечание относительно полей domain и path, определяющих условие, при котором выполняется установка cookie.

Когда браузер загружает документ HTML с сервера Web и среди заголовков HTTP этого документа присутствует заголовок Set-Cookie, он проверяет возможность установки cookie. В процессе проверки анализируется адрес URL, откуда был загружен этот документ, а также содержимое полей domain и path.

Если эти поля не указаны, то по умолчанию считаются, что они соответствуют адресу URL, по которому находится загруженный документ HTML. В этом случае выполняется установка cookie.

В том случае, когда указано поле domain, установка cookie выполняется только тогда, когда документ был загружен с сервера Web, принадлежащего данному домену.

С помощью параметра path можно установить ограничение на адреса URL в рамках домена, для которых выполняется установка cookie. При этом значение “/” соответствует всем адресам данного домена.

Одновременно сервер Web может создать несколько параметров cookie, включив в заголовок документа HTML несколько заголовков Set-Cookie.

Второй способ: создание cookie в сценарии 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.

Если же поиск оказывается неудачным, функция findCookie возвращает пустую строку.

Как пользоваться функцией findCookie?

Во-первых, с помощью этой функции вы можете проверить, установлен ли для данного документа cookie с заданным именем:

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

{

// cookie с именем Visit установлен

. . .

}

else

{

// cookie с именем Visit не установлен

. . .

}

Для того чтобы записать в текстовую переменную значение параметра cookie с заданным именем, вы должны сделать следующее:

var szVisitValue = findCookie("Visit");

Как видите, пользоваться функцией findCookie достаточно просто.

Изменение значения параметра cookie

Для изменения значения параметра cookie с заданным именем вы можете просто вызвать функцию addCookie еще раз:

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

// Значение параметра Count равно 0

. . .

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

// Значение параметра Count равно 5

Здесь мы вначале установили для параметра Count значение 0, а затем изменили это значение на 5.

Удаление cookie

Самый простой способ удалить cookie - установить для него такое время автоматического удаления, которое уже прошло. Для этого нужно получить текущую дату, уменьшить ее, например, на одну микросекунду, а затем изменить значение document. cookie.

Все это делает функция removeCookie:

function removeCookie(szName)

{

var dtExpires = new Date();

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

var szValue = findCookie(szName);

document. cookie = szName + "=" + szValue +

"; expires=" + dtExpires. toGMTString();

}

В последней строке этой функции мы указали такое значение параметра expires, которое вызывает немедленное удаление cookies браузером.

Ограничения на использование cookie

На использование cookie накладываются определенные ограничения, которые мы перечислили ниже:

·  всего может быть создано не более чем 300 cookie;

·  каждый cookie не может превышать по своему размеру 4 Кбайт;

·  для каждого домена может быть создано не более 20 cookie

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

Несколько примеров использования cookie

В этом разделе на примере конкретных сценариев JavaScript мы покажем, как можно использовать cookies для решения различных практических задач.

Фиксация повторных посещений страницы

В нашем первом примере документ HTML содержит форму с двумя кнопками (рис. 7.1).

Рис. 7.1. Кнопки для перехода к динамически создаваемому документу HTML и для удаления cookie

Если нажать на кнопку Go to page, сценарий JavaScript создаст новый документ HTML. Внешний вид этого документа зависит от того, сколько раз пользователь нажимал на эту кнопку.

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

Когда вы нажимаете на кнопку Go to page в первый раз, cookie еще не создано. При этом создается документ HTML, внешний вид которого показан на рис. 7.2.

Рис. 7.2. Внешний вид созданного динамически документа HTML при первом посещении

Во второй и последующий разы внешний вид документа изменяется (рис. 7.3).

Рис. 7.3. Внешний вид созданного динамически документа HTML при третьем посещении

Теперь здесь виден новый заголовок, а также содержимое параметров cookie с именами Visit и Count.

При каждом новом посещении значение параметра Count будет увеличиваться на единицу. Если же в документе, показанном на рис. 7.1, нажать кнопку 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=" + dtExpires. 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>

<H1>Visit our page!</H1>

<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.

Функция btnClick вызывается, когда пользователь нажимает в форме кнопку с надписью 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, удаляя их:

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

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

Записная книжка Cookies Notepad

В следующем примере мы применили cookie для хранения произвольного текста, набранного пользователем в многострочном окне редактирования (рис. 7.4).

Рис. 7.4. Документ с записной книжкой Cookies Notepad

При первой загрузке документа 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 + "=" + szValue +

"; expires=" + dtExpires. toGMTString();

}

function btnClick()

{

addCookie("MyText",ment. value,10);

}

// -->

</SCRIPT>

</HEAD>

<BODY BGCOLOR=white>

<H1>Cookies Notepad</H1>

<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');ment. value=''">

</FORM>

<SCRIPT LANGUAGE="JavaScript">

<!--

var szMyText="";

szMyText = findCookie("MyText");

if(szMyText!= "")

{

ment. 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",ment. value,10);

}

Эта функция просто записывает в параметр cookie с именем MyText текстовую строку, извлеченную из многострочного поля редактирования ment. value.

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

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

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

В самом конце тела документа HTML находится небольшой фрагмент сценария JavaScript, запускающийся сразу после загрузки этого документа:

var szMyText="";

szMyText = findCookie("MyText");

if(szMyText!= "")

{

ment. value = szMyText;

}

Этот фрагмент пытается получить значение параметра cookie с именем MyText. Если это ему удается и функция findCookie возвращает непустую строку, полученная строка записывается в окно многострочного поля редактирования ment. value.

В результате сразу после загрузки документа это окно оказывается заполненным текстом, сохраненным в cookie.

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

MyText

This%20is%20sample%20text.%0D%0A%u042D%u0442%u043E%20%u0442%u0435%u043A%u0441%u0442%2C%20%u043A%u043E%u0442%u043E%u0440%u044B%u0439%20%u044F%20%u043D%u0430%u0431%u0440%u0430%u043B%20%u0434%u043B%u044F%20%u043F%u0440%u0438%u043C%u0435%u0440%u0430.%0D%0A%0D%0A%u0410%u043B%u0435%u043A%u0441%u0430%u043D%u0434%u0440%20%u0424%u0440%u043E%u043B%u043E%u0432.

~~local~~/E:\JavaScript\Source\chapter7\Notebook\

0

*

В самом начале файла видно имя MyText параметра cookie. На следующих строках до строки ~~local~~ расположено значение параметра MyText, соответствующее тексту, показанному на рис. 7.4.

Вслед за строкой ~~local~~ идет локальный адрес URL документа и другие параметры cookies, такие как дата, по достижению которой браузер удалит cookie.

Если удалить файл Notebook\ и затем открыть документ HTML, многострочное окно редактирования будет пустым. Удалив этот файл, мы удалим и расположенный в нем cookie.

Настройка параметров документа HTML

Третий пример демонстрирует, как можно использовать cookie для настройки пользователем параметров документа HTML.

На рис. 7.5 показан документ HTML с двумя кнопками и переключателем, имеющим зависимую фиксацию.

Рис. 7.5. Главный документ HTML, при помощи которого можно выполнить настройку

Если нажать верхнюю кнопку, то в окне браузера появится документ HTML, созданный динамически сценарием JavaScript. В первый раз этот документ будет таким, как показано на рис. 7.6.

Рис. 7.6. Внешний вид документа при первом посещении

При помощи переключателей вы можете выбрать один из четырех цветов фона документа. Выбранное значение запоминается в cookie. Для того чтобы вернуться к цвету, принятому по умолчанию, в документе HTML, показанному на рис. 7.5, нужно нажать нижнюю кнопку.

При последующих посещениях внешний вид документа изменится (рис. 7.7).

Рис. 7.7. Внешний вид документа при третьем посещении

Его фон будет иметь такой цвет, какой был выбран при помощи переключателей.

Исходный текст документа HTML приведен в листинге 7.3.

Листинг 7.3. Файл chapter7/CustomPage/CustomPage. html

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=windows-1251">

<TITLE>Customize your page</TITLE>

<SCRIPT LANGUAGE="JavaScript">

<!--

var szColor="White";

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=" + dtExpires. toGMTString();

}

function btnGo()

{

if(findCookie("Count") == "")

{

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

addCookie("bgColor",szColor,10);

document. write("<H2>Добро пожаловать!</H2>");

document. write("<P>Вы можете настроить цвет фона этой");

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14