Приветствую Вас, Гость

Одновременный вывод на экран нескольких Web-страниц

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

ПРАКТИКУМ

Чтобы создать Web-страницу с фреймами, вам потребуются как минимум три страницы. Во-первых, вам нужны две или больше Web-страниц, которые будут выводиться на экран одновременно. (Если вам нужно отобразить только одну страницу, разбивать окно браузера на фреймы не имеет смысла.) Во-вторых, вам потребуется страница определения фреймов, которая должна будет сообщить  Web-браузеру размер и количество фреймов, а также имена Web-страниц, которые будут отображены в каждом фрейме.
Предположим, например, у вас есть страница с навигационной панелью, сохраненная в файле с именем n_menu.html. Кроме того, у вас имеется Web-страница с информацией о компании, сохраненная в файле с именем opendoc.html. С помощью фреймовой страницы, которая описывается приведенным  ниже HTML-кодом, вы можете отобразить обе страницы (n_menu.html и opendoc.html) на экране одновременно:

<!doctype html public "-//W3C//DTD HTML 4.0 1 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Пример документа с фреймами</title>
</head>
<frameset cols="80,400">
<frame name="menu" src="n_menu.htm" >
<frame name="content" src="opendoc.htm">
</frameset>
</html>

Обратите внимание, что в HTML-документах, содержащих фреймы, начальный и конечный дескрипторы задания фреймов (<frameset></frameset>) заменяют начальный и конечный дескрипторы тела документа (<body></body>), присутствующие в Web-страницах без фреймов. Это связано с тем, что у фреймовой страницы нет "тела" или "содержимого" для отображения. Единственное назначение фреймовой страницы — это разделять окно браузера на рамки (вроде кадровых рамок) и сообщать Web-браузеру имена путей или URL-адреса Web-страниц, которые должны быть отображены в каждом из фреймов.
В данном примере атрибут cols в дескрипторе  <frameset> дает Web-браузеру указание нарисовать два фрейма, первый из которых должен иметь ширину 80 пикселей, а второй — 400 пикселей. Таким образом, атрибут cols сообщает Web-браузеру не только количество фреймов, которые тот должен нарисовать (по числу столбцов, перечисленных в значении атрибута), но и ширину каждого фрейма в пикселях. (Например, если у вас три фрейма, атрибут cols будет иметь три значения и выглядеть так: cols="n,n,n"; если у вас четыре фрейма, атрибут cols будет иметь четыре значения и выглядеть как cols="n,n,n,n", и т.д.)
Атрибут src в дескрипторе фрейма <frame> сообщает Web-браузеру имя Web-страницы, которая должна быть отображена внутри фрейма, когда браузер первоначально загружает фреймовую страницу. В текущем примере Web-браузер загрузит n_menu.htm в первый фрейм (названный menu) и opendoc.htm во второй фрейм (с именем content), как показано на рис. 1.27.

Рис. 1.27. Окно содержит два фрейма, в каждом фрейме отображается отдельный  HTML-документ

Когда посетитель сайта щелкает на гиперссылке в фрейме меню, атрибут target дескриптора <а> сообщает Web-браузеру, в какой фрейм загрузить Web-страницу, на которую указывает атрибут href дескриптора <а>. Например, следующая гиперссылка дает Web-браузеру указание отобразить документ aboutus.html в фрейме content, когда пользователь щелкнет в каком-то месте ссылки "О нас":

<a href="aboutus.html" target="content">0 нас</а>

Таким образом, когда посетитель сайта щелкнет на гипертекстовой ссылке "О нас", Web-браузер заменит документ (opendoc.html из предыдущего примера), отображаемый в целевом фрейме (content) документом aboutus.html (на который указывает атрибут href в данном примере). Если у дескриптора <а> гиперссылки нет атрибута target, браузер загрузит документ, на который указывает гиперссылка, в фрейм, где отображалась Web-страница, гиперссылку которой активизировал пользователь. Например, HTML-код <а href="aboutus.html">О нас</а> заставит Web-браузер заменить в фрейме menu документ n_menu.html документом aboutus.html (при условии, что "О нас" — гиперссылка в панели меню, отображаемой внутри фрейма menu).
Аналогично, когда пользователь щелкнет на гиперссылке в панели содержимого (content), у гиперссылки либо будет атрибут target, который даст браузеру указание загрузить связанную страницу во фрейм content, либо вовсе не будет атрибута target, — в этом случае браузер все равно загрузит связанную страницу в фрейм content. Отображая извлекаемые браузером связанные страницы в меню content, вы сможете оставлять навигационное меню (во фрейме menu) на экране постоянно.
Фреймы в Web-страницах — отличный способ структурирования Web-сайта. Однако поскольку фреймовые Web-документы требуют загрузки и отображения трех или более Web-страниц, для отображения фреймовой страницы Web-браузеру требуется больше времени, чем для отображения страницы без фреймов. Более того, не все Web-браузеры поддерживают фреймы. Те из браузеров, которые не поддерживают фреймы, не отобразят ни Web-страницы во фреймах, ни фреймы, определенные страницей задания фреймов.
Чтобы решить проблему браузеров, не поддерживающих фреймы, включите в свой документ задания фреймов начальный и конечный дескрипторы воспроизведения документа без фреймов (<noframes></noframes>), как показано в следующем коде:

<!doctype html public "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html><head>
<title>Документ задания фреймов с дескриптором noframes</title>
</head>
<frameset cols="80,400">
<frame name="menu" src="n_menu.htm">
<frame name="content" src="opendoc.htm">
<noframes>
<a href="main-noframes.html">Щелкните здесь, чтобы просмотреть версию этого документа без фреймов.</а>
</noframes>
</frameset></html>

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