HTML / 11. Фреймы

Модель XFrames

История фреймов – типичная история Золушки. Пройдя путь от нестандартного расширения в броузере Netscape до стандартной конструкции языков HTML и XHTML, фреймы продемонстрировали свою важность в мире HTML-документов. Тем не менее с фреймами связано несколько проблем, до сих пор не получивших полного разрешения:

• навигация с помощью кнопки броузера Назад может вести себя непредсказуемо;

• вы не можете напрямую сослаться на документ в наборе фреймов

• нельзя сослаться на конкретный набор фреймов с помощью одного URL-адреса;

• поисковые механизмы часто пропускают содержимое фреймов.

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

XFrames-документ
В языках HTML и XHTML фреймы замещают тег документа, не затрагивая теги <html> и <head>. В модели XFrames соответствующий документ заменяет собой весь <html>-документ, неся в себе собственный заголовок <head> и содержимое во фреймах. В теге <head> авторы могут указать теги <title> и <style>, а содержимое фреймов определяется с помощью тегов <group> и <frame>. Небольшой XFrames-документ может выглядеть примерно так:

<frames xmlns="http://www.w3.org/2002/06/xframes/">
<head>
<title>Kumquat Lore</title>
<style type="text/css">
#header {height: 10em }
#toc, #nav {width: 20%}
#footer {height: 4em }
</style>
</head>
<group compose="vertical">
<frame xml:id="header" source="lore.xhtml"/>
<group compose="horizontal">
<frame xml:id="toc" source="toc.xhtml"/>
<frame xml:id="main" source="intro.xhtml"/>
<frame xml:id="nav" source="main-nav.xhtml"/>
</group>
<frame xml:id="footer" source="copyright.xhtml"/>
</group>
</frames>

Тег <head> устанавливает заголовок документа и определяет стили, которые будут влиять на вывод соответственно названных фреймов из набора, образующего документ. Тег <group> аналогичен тегу <frameset> и определяет группу фреймов и другие группы, компоновкой которых управляет атрибут compose. Тег <frame> определяет отдельный документ, содержимое которого выводится во фрейме. В нашем примере пять фреймов организованы в три ряда, причем верхний и нижний ряды содержат по одному фрейму, а в среднем находится три фрейма.

В этом ряду левый и правый фреймы занимают по 20% доступного пространства, а центральный – остальную часть. Отдельные фреймы именуются с помощью атрибута xml:id, и ссылки на эти имена используются при загрузке нового содержимого во фрейм, при ассоциировании стилей с фреймом и при создании URL-адреса с целью вывода конкретного набора фреймов на экран (к этой теме мы еще вернемся).Атрибут compose в теге <group> предоставляет вам дополнительные возможности компоновки, отсутствующие у традиционных фреймов. В то время как эффект от значений horizontal и vertical вполне очевиден, значения single и free гораздо интереснее. Установка атрибута compose в значение single заставляет броузер выводить только один фрейм из группы за раз, причем предполагается присутствие некой индикации наличия других фреймов и способа добраться до них. Например, это может быть раскрывающееся меню, позволяющее выбрать фрейм.

Значение free атрибута compose выводит группу фреймов в виде набора окон, свободно перемещаемых в области вывода. Пользователь может передвигать окна, как ему заблагорассудится, и даже перекрывать одно окно другим! Предполагается, что это позволит создать аналог рабочего стола в окне броузера и предоставить фреймы пользователю в полное распоряжение.

URL-адреса в модели XFrames
Чтобы поддержать явные ссылки на фреймы, входящие в состав документа, модель XFrames расширяет определение URL, добавляя в неключевое слово #frames. Эта функциональная возможность позволит вам определять содержимое отдельно для каждого фрейма в документе, что совершенно невозможно во фреймовой модели, принятой сейчас в языках HTML и XHTML.

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

http://www.kumquat.com/lore.html#frames(toc=section7.xhtml,main=arcticquats.
xhtml)

Этот URL заставляет броузер открыть документ с фреймами, названный lore.html, и загрузить во фреймы toc и main указанные страницы. В другие фреймы, упомянутые в документе, загружается содержимое, установленное по умолчанию, поскольку про них в этом URL ничего не сказано. Фреймы, не имеющие содержимого по умолчанию, остаются пустыми.

Этот мощный синтаксис сулит огромные возможности авторам документов и конечным пользователям. Авторы смогут конструировать ссылки, которые позволят открыть комплект документов с фреймами легко воспроизводимым способом. Пользователи смогут делать закладки на документы с фреймами и не сомневаться, что при следующем открытии документа они увидят фреймы с тем же содержимым, которое определил URL.


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