Второй (необязательный) аргумент обсуждавшегося ранее метода Window.open() – это имя только что созданного окна. Создавая фрейм с помощью тега <frame>, можно с помощью атрибута name задать его имя. Важным основанием именования окон и фреймов является то, что их имена могут затем использоваться в качестве значений атрибута target тегов <a> и <form>. Это значение сообщает броузеру, где вы хотите видеть результат активизации ссылки или подтверждения формы.
Например, если у вас имеется два окна, одно с именем table_of_contents, а другое – mainwin, в окне table_of_contents может быть следующий HTML_код:
Когда пользователь щелкает на этой гиперссылке, броузер загружает указанный URL_адрес, но вывод осуществляется не в окно, в котором находится ссылка, а в окно с именем mainwin. Если окно с именем mainwin отсутствует, щелчок на ссылке создает новое окно с этим именем, и документ с указанным URL_адресом загружается в это окно.
Атрибуты target и name являются частью HTML_кода и работают без вмешатель_ ства JavaScript, но есть и связанные с JavaScript причины присваивания имен фреймам. Мы видели, что в любом объекте Window имеется массив frames[], содер_ жащий ссылки на все фреймы окна (или фрейма) независимо от того, есть у них имена или нет. Однако если фрейму дано имя, ссылка на этот фрейм также со_ храняется в новом свойстве родительского объекта Window. Имя нового свойства совпадает с именем фрейма. Следовательно, можно создать фрейм с помощью следующего HTML_кода:
<frame name="table_of_contents" src="toc.html">
14.8. Работа с несколькими окнами и фреймами
После этого на данный фрейм можно ссылаться из другого смежного с ним фрейма:
parent.table_of_contents
Такой код проще читать и понимать, чем код, в котором индекс массива жестко закодирован (и вы зависите от него), что неизбежно в случае безымянного фрейма:
parent.frames[1]
В примере 14.7 в конце этой главы программный код ссылается на фреймы по именам с использованием только что описанного приема.