HTML / 11. Фреймы

Окна и фреймы в качестве цели

Можно создать метку фрейма, используя в теге <frame> атрибут name. Снабженный именем (name) или идентификатором (id) фрейм может служить окном для отображения документа, на который указывает гиперссылка в документе, отображенном в другом фрейме. Осуществить это перенаправление можно, используя в гиперссылке, ссылающейся на этот документ, атрибут target.

Атрибут target тега (a)
Если включить в тег (a) атрибут target (цель), броузер загрузит и отобразит документ, упомянутый в атрибуте href, во фрейм или в окно с именем, соответствующим значению атрибута target. Если не существует ни фрейма, ни окна с таким именем или идентификатором, броузер откроет новое окно, присвоит ему указанное имя и загрузит новый документ в это окно. По окончании этого процесса новое окно может служить целью для гиперссылок.

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

<h3>Table of Contents</h3>
<ul>
<li>Preface
<li>Chapter 1
<li>Chapter 2
<li>Chapter 3
</ul>

Когда пользователь первый раз выберет одну из гиперссылок оглавления, броузер откроет новое окно, назовет его «view_window» и отобразит в нем содержимое выбранного документа. Если пользователь выберет новую гиперссылку в оглавлении, а окно «view_window» еще открыто, броузер опять отобразит выбранный документ в этом окне, заместив предыдущий документ.

На протяжении всего этого процесса окно, содержащее оглавление, остается доступным пользователю. Щелкая на гиперссылках в одном окне, пользователь изменяет содержимое другого окна.

Чаще атрибут target используется не для того, чтобы открывать совершенно новое окно броузера, а для того, чтобы направлять содержимое документа, на который указывает гиперссылка, в один из фреймов, заданных тегом <frameset>, или в окно <iframe>. Например, можно разместить оглавление в одном фрейме двухфреймового документа, а соседний фрейм использовать для отображения выбранных документов:

<frameset cols="150,*">
<frame src="toc.html">
<frame src="pref.html" name="view_frame">
</frameset>

Когда броузер первый раз отображает оба эти фрейма, левый фрейм содержит оглавление, а правый – предисловие.

Когда пользователь выбирает гиперссылку из оглавления в левом фрейме (например Chapter 1), броузер загружает и отображает ассоциированный с гиперссылкой документ в правый фрейм, названный «view_window». Когда выбираются другие гиперссылки,содержимое правого фрейма меняется, в то время как оглавление в левом фрейме остается постоянно доступным для пользователя.

Специальные значения атрибута target
Существуют четыре зарезервированных значения атрибута target для специальных видов перенаправления документов:

_blank

Броузер всегда загружает документ, на который указывает гиперссылка с target="_blank", во вновь открываемое безымянное окно.

_self

Это значение принимается по умолчанию для тегов (a), в которых этого атрибута нет, и означает, что документ, на который указывает гиперссылка, должен быть загружен и отображен в том же окне или фрейме, что и документ, содержащий гиперссылку._parent
Присваивание target="_parent" означает, что документ должен быть загружен в родительское окно или должен заместить набор фреймов, в котором содержится фрейм с документом, содержащим гиперссылку. Если ссылка содержится в окне или фрейме верхнего уровня, значение эквивалентно значению _self.

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

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

_top

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

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

Атрибут target в теге устанавливает принимаемую по умолчанию цель для всех гиперссылок в документе, не содержащих атрибут target. Например, в содержащем оглавление документе из нашего примера все гиперссылки указывают, что документ должен быть отображен во фрейме «view_frame». Вместо того чтобы включать в каждую гиперссылку атрибут target, следует указать общую для всех гиперссылок цель в теге , содержащуюся в заголовке документа:

<head>
<title>Table of Contents</title>

</head>

<h3>Table of Contents</h3>
<ul>
<li>Preface</li>
<li>Chapter 1</li>
<li>Chapter 2</li>
<li>Chapter 3</li>
</ul>


Заметьте, что мы не включали никаких других указаний на цель в список гиперссылок, поскольку броузер загрузит и отобразит все указанные в гиперссылках документы во фрейм «view_frame», как это предписано спецификацией атрибута target в теге .

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

Допустим, что все документы на сайте должны быть представлены в трех фреймах: навигационном в верхней части окна броузера, прокручиваемом фрейме для просмотра документов – посередине, и формы для обратной связи – в нижней части окна. Имя фрейма для просмотра документов задано атрибутом name тега <frame> документа верхнего для
вашей коллекции документов уровня и используете атрибут target в теге во всех документах вашего сайта, чтобы гарантировать, что все ссылки будут загружаться в средний фрейм.

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

Решение проблемы заключается в том, чтобы все гиперссылки, указывающие на удаленный документ, имели мишенью _top. Тогда при выборе кем-либо ссылки, уводящей с вашего сайта, удаленный документ заместит содержимое всего окна броузера, включая ваши фреймы с навигационными документами и средствами обратной связи. Если большая
часть ссылок в ваших документах ведет к другим сайтам, можно подумать о возможности включения в тег ваших документов спецификации target="_top" и явном использовании атрибута target в ссылках на ваши локальные документы.

Статьи по HTML на эту тему:

Модель XFrames

Вернуться в раздел: HTML / 11. Фреймы