Добавляем...


Файлы cookie и управление
Файлы cookie используются для хранения информации о состоянии. Тип информации, которую вы храните в файле cookie, и цели ее использования ограничены только вашим воображением. Лучшие образцы применения файлов cookie улучшают представление страницы и ее содержимого, основываясь на информации о предпочтениях пользователя или его профиле.

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

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

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

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


// этот сценарий может размещаться в index.html
var cookies = new Object( );
// сразу установим cookie, чтобы проверить наличие их поддержки
document.cookie * "cookiesenabled=yes";
extractCookies( );
if (cookies["cookiesenabled"] == "yes")
(
if (cookies["returninguser"] == "true")
l
location.href = "/content.html";
}
else
{
var expiration = new Date( );
expiration.setYear(expiration.getYear( ) + 2);
// срок действия cookie истечет через 2 года
document.cookie = "returninguser=true; expires=" +
expiration.toGMTString( ); location.href = "/
introduction.html";
}
}

Обратите внимание на то, что сценарий сразу же пытается установить файл cookie, чтобы проверить, разрешает ли пользователь использовать файлы cookie. Если — нет, то перенаправление не выполняется.

Однократно всплывающие окна
Однократно всплывающие окна используются для того, чтобы представить определенную информацию пользователям, впервые посещающим соответствующую страницу. Такие всплывающие окна обычно содержат приветственные сообщения, напоминания, специальные предложения или советы, касающиеся выбора оптимальной конфигурации. В следующем примере создается страница с "советом дня", которая отображается один раз за сеанс:


var cookies = new Object ( );
document.cookie » "cookiesenabled=yes";
extractCookies( );
if (cookies["cookiesenabled"] == "yes" && Icookies["has_seen_tip"])
{
document.cookie = "has_seen_tip=true";
window.open("/tipoftheday.html", "tipwindow", "resizable");
}

Если пользователь не разрешает поддержку файлов cookie, сценарий не показывает всплывающее окно. Это предотвращает раздражение пользователей, загружающих страницу при отключенной поддержке файлов cookie.

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

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


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Возможности настройки на базе файлов cookie</title>
<meta http-equiv="content-type"
content="text/html; charset=windows-1251" />
<script type="text/javascript">
<!--
var cookies = new Object( );
function extractCookies( )
{
var name, value;
var beginning, middle, end;
for (name in cookies)
{
cookies =new Object( );
break;
}
beginning = 0;
while (beginning < document.cookie.length)
{
middle = document.cookie.indexOf('=', beginning);
end = document.cookie.indexOf(';', beginning);
if (end == -1)
end = document.cookie.length;
if ( (middle > end) I I (middle == -1)
)
{
name = document.cookie.substring(beginning, end);
value = "";
)
else
{
name = document.cookie.substring(beginning, middle);
value = document.cookie.substring(middle + 1, end) ;
}
cookies[name] = unescape(value) ;
beginning = end + 2;
}
}
function changeColors(scheme)
{
switch(scheme)
{
case "plain": foreground = "black"; background = "white"; break;
case "ice": foreground = "lightblue"; background = "darkblue";
break;
case "green": foreground = "white"; background = "darkgreen";
break;
default: return;
}
document.bgColor = background;
document.fgColor = foreground;
)
function changeScheme(which)
{
document.cookie - "cookiesenabled=true";
extractCookies( ) ;
if (!cookies["cookiesenabled"] )
{
alert("Вам следует разрешить использовать cookie!");
return;
}
document.cookie = "scheme=" + which;
changeColors(which);
)
var pageLoaded = false;
extractCookies ( );
changeColors(cookies["scheme"] );
II—>
</script>
</head>
<body onload="pageLoaded=true">
<h1>Возможности настройки</h1>
<hr />
<blockquote> Вычислительное ядро ENIAC содержит 19000 электровакуумных
ламп и весит 30 тонн, но компьютеры будущего будут содержать всего 1000
электровакуумных ламп и весить, наверное, всего 1,5 тонны.</blockquote>
<em>Popular Mechanics, март 1949 r.</em>
<br />
<form action="#" method="get">
Изменить цветовую схему:   Snbsp;
<input type="button" уа1иё="обычная" onclick="changeScheme('plain');" />
<input type="button" уа1ие="синева" onclick="changeScheme('ice');" />
<input type="button" value="зeлeнь" onclick="changeScheme('green');" />
</form>
</body>
</html>

Можно расширить возможности этого примера и обеспечить возможность сохранения выбранной таблицы стилей или какой-то другой информации о предпочтениях пользователя. Одним из интересных вариантов была бы возможность для пользователей определить, какие возможности они хотят использовать при работе с узлом — DHTML или Flash — чтобы затем сохранить информацию о соответствующих предпочтениях.


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика