В HTML нет стандартного способа реализации вложенных меню. Тем не менее за счет графики можно создать их подобие. При этом следует понимать, что место, на которое ложится графика, нельзя заполнить текстом.
Пример 7.11. В этом примере вложенное меню расположено справа от основного. Эффект вложенности достигается за счет изменения цвета (подпункты имеют цвет, отличный от цвета пунктов).
<SCRIPT>function submenu(a){ with(document) { if(a==1) { item1.src="item_1_yes.gif"; // 1-й пункт активен item2.src="item_2_no.gif"; // 2-й пункт неактивен subi1.src="item_1_1.gif"; // 1-й пункт вложенного меню 1 subi2.src="item_1_2.gif"; // 2-й пункт вложенного меню 1 } if(a==2) { item1.src="item_1_no.gif"; // 2-й пункт активен item2.src="item_2_yes.gif"; // 1-й пункт неактивен subi1.src="item_2_1.gif"; // 1-й пункт вложенного меню 2 subi2.src="item_2_2.gif"; // 2-й пункт вложенного меню 2 } }}</SCRIPT> <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1><TR><TD><A HREF="javascript:void(0);" onMouseOver="submenu(1);"> <IMG BORDER=0 NAME=item1 SRC=item_1_yes.gif></A></TD><TD><IMG BORDER=0 NAME=subi1 SRC=item_1_1.gif></TD></TR><TR><TD><A HREF="javascript:void(0);" onMouseOver="submenu(2);"> <IMG BORDER=0 NAME=item2 SRC=item_2_no.gif></A></TD><TD><IMG BORDER=0 NAME=subi2 SRC=item_1_2.gif></TD></TR></TABLE>
Пример 7.14. Вложенное меню (пункт выделен цветом) (html, txt)
Рис. 7.10. Вложенное меню (пункт выделен цветом)
Подчиненность меню можно подчеркнуть изменением его положения относительно основного меню (составьте соответствующий код самостоятельно):
Рис. 7.11. Вложенное меню (пункт выделен сдвигом)
В этом случае для продвижения меню вниз необходимо зарезервировать место при помощи невидимых или видимых картинок.
При использовании слоев можно создать настоящее выпадающее меню.
8. Лекция: Программируем "за кадром"
Cookie являются механизмом управления обменом данных. Основная их функция - поддержка сеанса работы между клиентом (браузером) и сервером.
Формально, cookie (читается: куки ; не склоняется) - это небольшой фрагмент данных, которые веб-браузер пересылает веб-серверу в HTTP-запросе при каждой попытке открыть очередную страницу сайта. Обычно куки создаются веб-сервером и присылаются в браузер при первом запросе к сайту. Куки также могут быть созданы самой загруженной web-страницей, а именно имеющимся в ней скриптом JavaScript. Далее хранятся на компьютере пользователя в виде текстового файла, до тех пор, пока либо не закончится их срок, либо они будут удалены скриптом или пользователем. Имеются ограничения на объем и количество хранимых cookie, они зависят от браузера, но есть минимальные требования. Спецификация cookie описана в RFC 2965. На практике cookie обычно используются для:
аутентификации пользователя;
хранения персональных предпочтений и настроек пользователя;
отслеживания состояния сессии доступа пользователя;
ведения статистики о пользователях.
Без куки просмотр каждой веб-страницы является изолированным действием, не связанным с просмотром других страниц того же сайта. В конце этого раздела мы создадим страницы, передающие друг другу информацию с помощью куки.
Главными атрибутами cookie являются: имя/значение куки, срок действия, путь, доменное имя, шифрование. Атрибуты записываются через точку с запятой. Обязательным является лишь имя/значение. Например:
Здесь customer - имя куки; 21584563 - значение куки; expires=... - срок действия куки;path=/ - путь, для которого действует эта куки (в данном случае куки действуют для любой страницы на данном сайте); domain=www.shop.ru - домен (сайт), для которого будет действовать эта куки; secure - использовать ли для передачи куки шифрованный канал (HTTPS). Если не указан expires, то куки действительна до закрытия браузера. Если не указаны path и domain, то куки действительна для текущей web-страницы. Удаляются куки путем указания истекшего срока действия (браузер сам сотрет такие куки по окончании своей работы). Подробнее о формате cookie рассказано в лекции Спецификация Cookie из соседнего курса тех же авторов. Здесь же мы остановимся на методах работы с cookie с помощью инструментов JavaScript.