Можно использовать скрипт, просто перенаправляющий на фреймсет (из предыдущей версии FAQ), но гораздо грамотнее сделать так, чтобы пользователю не пришлось потом долго лазить по меню в поисках нужной странички.
Пусть http://www.myserver.com/dir/frameset.html - это фреймсет, в котором есть два фрейма: menu.html - меню, main - рабочее окно для main.html, 1.html, 2.html и т.д.
В случае, если фреймсет и вызванная страничка лежат на одном сервере, то в <head> нужно вставить такой скрипт:
<script language="JavaScript" type="text/javascript"><!-- if (parent==self || parent.location.pathname!='/dir/frameset.html') { var framesetURL='/dir/frameset.html?main='+ escape(self.location.href) if (typeof(location.replace)!='undefined') { self.location.replace(framesetURL) //этот метод из JS1.1 грамотнее, чем простой редирект, потому что //не засоряет history. } else self.location=framesetURL; } //--></script>
В случае, если вызванная страничка и фреймсет расположены на разных серверах, то скрипт будет такой:
<script language="JavaScript" type="text/javascript"><!-- var parentURL=''; with (parent.location) parentURL=protocol+'//'+hostname+pathname; if (parent==self || parentURL!='http://www.myserver.com/dir/frameset.html') { var framesetURL='http://www.myserver.com/dir/frameset.html?main='+ escape(self.location.href) if (typeof(location.replace)!='undefined') { self.location.replace(framesetURL) } else self.location=framesetURL; } //--></script>
Если у вас на сервере работает CGI, PHP, или ASP, то фреймсет должен взять пришедший параметр $main и указать его в качестве src для фрейма main.
Если это невозможно (страничка лежит на халявном серваке), то во frameset.html
в <head> нужно поставить:
<script language="JavaScript" type="text/javascript"><!-- function loadMain() { var mainPos=location.search.indexOf('main=')+5; if (mainPos>4) { var mainURL=location.search.substring(mainPos,location.search.length); if (mainURL.indexOf('&')>-1) { mainURL=mainURL.substring(0,mainURL.indexOf('&')) } mainURL=unescape(mainURL); if (typeof(location.replace)!='undefined') { self.frames.main.location.replace(mainURL) } else self.frames.main.location.href=mainURL } } //--></script>
А в тег <frameset> нужно прописать параметр:
onload="loadMain();"
Тогда при внешней ссылке на 1.html или наборе в строке браузера http://www.myserver.com/dir/1.html откроется фреймсет, и в нужный фрейм автоматически загрузится 1.html.