Многие начинающие web-мастера используют при оформлении своих сайтов (страничек и пр.) фреймы. Лично я этого не одобряю (но это уже другая история), но когда-то и сам пользовался ими.
И какие-же у меня возникали тогда проблемы?
Первая - это когда одним щелчком по ссылке нужно обновить сразу два (три, да сколько угодно) фрейма. Вторая - это проблема при работе с поисковыми машинами.
А теперь поподробней...
Допустим, у Вас есть два фрейма, один в левой части с меню, другой с содержанием страницы. И вам понадобилось, чтобы при щелчке на ссылке под названием, например, "Статьи", обновилось содержимое и фрейма меню, выведя туда файл с более развернутым меню, и, естественно, содержимое фрейма с содержанием (извините за каламбур).
В общем случае Ваша фреймовая конструкция может выглядеть следующим образом:
<frameset cols="150, *">
<frame src="menu.htm" scrolling=auto name="menu">
<frame src="text.htm" scrolling=auto name="text">
</frameset>
То есть заметьте, что для того, чтобы решить поставленную задачу, совсем необязательно задавать фреймам имена... Хотя имена все равно нужны для установки цели ссылки (атрибут TARGET).
Далее - пример ссылки, при щелчке на которой происходит обновление наших двух фреймов.
<script language="JavaScript">
<!--
function update_all()
{
parent.frames[0].location = "new_menu.htm";
parent.frames[1].location = "new_text.htm";
}
// -->
</script>
<a href="javascript:update_all()">Click me!</a>
И вот теперь-то и происходит волшебное обновление двух фреймов. Причем, заметьте, можно было сделать так, чтобы наши два фрейма обновлялись из третьего. Еще можно было-бы передавать имена загружаемых файлов в функцию и пр. Но этот пример - только иллюстрация возможностей по работе с фреймами.
И еще: когда Вы индексируете свой сайт, использующий фреймы, не замечали одной проблемы? Человек, придя к Вам с поисковика, попадает не во фреймовую структуру, а просто на отдельную страницу. Почему? Поисковые машины индексируют страницы, и им неведома структура фреймов Вашего сайта. Для того, чтобы обойти эту проблему, можно воспользоваться следующие конструкцией для каждой страницы Вашего сайта (кроме главной, содержащей описание набора фреймов):
<script language="JavaScript">
<!--
function check_frames()
{
if (parent.frames.length==0)
parent.location="index.htm";
}
// -->
</script>
body onLoad="check_frames()" - эта конструкция тела документа.
Конечно, и эту конструкцию можно усложнять и усовершенствовать, но это уже дело Ваших рук.
Автор: Дмитрий Порохня

