Работа с фреймами

Фреймы

Язык JavaScript очень тесно связан с HTML, ведь как правило используется на страницах сайтов. Соответственно, желательно постоянно совершенствовать свои знания и навыки не только в JavaScript, но и в HTML.
Одним из значительных плюсов JavaScript является возможность управлять в одном окне (фрейме) другими окнами (фреймами). Так, о сценарии, создающим новое окно, мы говорили в статье Создание кнопки и нового окна при помощи Javascript.


Важная информацияФрейм - подокно в браузере, содержащее в себе отдельный документ. Отображается в одном окне с другими фреймами (у которых собственные документы)


Для того, чтобы понять о чем пойдет речь, необходимо немного разобраться с результатом загрузки в браузер обычного HTML документа: в браузере будет создана модель, начинающаяся с единого объекта окна window, содержащего документ.  И там мы закономерно в прошлых статьях оперировали такими вещами, как window или self. Но как быть в случае, если браузер загружает на обычный документ, а тот, который содержит в себе несколько фреймов!?

В том случае, если открывается страница, содержащая сразу несколько подстраниц (фреймов), иерархическая структура будет несколько иной. В этом случае, каждый фрейм загружается в родительском окне, которое содержит лишь часть объектов обычных Html документов.

То есть, при многофреймовом окне, за редким исключением, нет смысла ссылаться на родительский документ.

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

Структура многофреймовых документов такова, что каждый дочерний фрейм независим от другого и может рассматриваться как объект окна.

Как сделать ссылку из родительского фрейма на дочерний

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

Для того, чтобы создать ссылку из родительского окна на один из фреймов, используется следующие варианты:

[window].frames[n].имя переменной объекта функции

[window].имяфрейма.имя переменной объекта функции

Как и в случае переменных в JavaScript, фреймам удобно присваивать свои собственные имена.

Как создать ссылку из дочернего фрейма в родительское окно

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

В том случае, если необходимо ссылаться на родительское окно, используется объект parent

parent.имя переменной объекта функции

Если же необходимо обратиться к самому главному в иерархической структуре документа объекту, то использовать можно top

top.имя переменной объекта функции

Как настроить взаимодействие между дочерними фреймами

В том случае, если необходимо настроить взаимодействие между дочерними фреймами, придется затронуть все высшие уровни. Получается как в проводнике Windows, для того, чтобы попасть в другую папку, необходимо сначала выйти на уровень выше.

parent.frames[n].имя переменной объекта функции

parent.frames["имя фрейма"].имя переменной объекта функции

parent.имя фрейма. имя переменной объекта функции


Важная информацияНастроить загрузку сценария можно только после успешной загрузки всех документов фреймов, поэтому не следует сразу создавать сценарии, где другие фреймы вызываются при загрузке страницы!

В этих случаях используем загрузчик onload, настройки которого следует задать в дескрипторе <frameset>