Иерархия фреймов
Рассмотрим сначала простой пример. Разделим экран на две вертикальные колонки: (открыть)
<HTML> <HEAD> </HEAD> <FRAMESET COLS="50%,*"> <FRAME NAME=left SRC=left.html> <FRAME NAME=right SRC=right.html> </FRAMESET> </HTML>
Рис. 14.3. Фрейм с двумя вертикальными колонками
Назовем окно, в которое помещают фреймы, _top(_parent).
Усложним пример: разобьем правый фрейм на два по горизонтали: (открыть)
<HTML> <HEAD> </HEAD> <FRAMESET COLS="50%,*"> <FRAME NAME=left SRC=left.html> <FRAMESET ROWS="50%,*"> <FRAME NAME=top SRC=top.html> <FRAME NAME=bottom SRC=bottom.html> </FRAMESET> </FRAMESET> </HTML>
Рис. 14.4. Правый фрейм, разбитый на два по горизонтали
Обратите внимание на два момента: во-первых, следует различать _top и top, во-вторых, исчез фрейм right. По поводу первого замечания: _top — это зарезервированное имя старшего окна, а top — имя фрейма, которое назначил ему автор страницы. По поводу второго замечания: старшим окном для всех фреймов является все окно браузера, фрейма с именем right в данном случае не существует.
Для того чтобы он появился, нужно свести оба наших примера в один. Это значит, что во фрейм right мы снова должны загрузить фреймовый документ.
Первый документ:
<HTML> <HEAD> </HEAD> <FRAMESET COLS="50%,*"> <FRAME NAME=left SRC=left.html> <FRAME NAME=right SRC=right.html> </FRAMESET> </HTML>
Второй документ (right.htm):
<HTML> <HEAD> </HEAD> <FRAMESET ROWS="50%,*"> <FRAME NAME=top SRC=top.html> <FRAME NAME=bottom SRC=bottom.html> </FRAMESET> </HTML>
В этом случае подчинение страниц будет выглядеть иначе, чем в примере с тремя фреймами.
Таким образом, мы получили тот же результат, что и с тремя фреймами и одним старшим окном. Однако этот вариант более гибкий: он позволяет задействовать фрейм, содержащий горизонтальную разбивку. Именно такой прием используется на домашней странице "Web-инжиниринг".
Такая интерпретация фреймовой структуры страницы находит отражение и в именовании фреймов JavaScript.