Новые файлы
Лучшие файлы
Группа: Гости
Сегодня: 10.07.2025
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Как определить, что юзер открыл страницу не в кадре, и перев
zizan
Добавлено: Понедельник, 20.02.2012 в 18:24| Пост № 1


Группа:
Пользователи
Сообщений:
100
Репутация:
Замечания:
Лучшая рип студия

Можно использовать скрипт, просто перенаправляющий на фреймсет (из предыдущей версии 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.
Offline
  • Страница 1 из 1
  • 1
Поиск: