House of Horse. Главная

Сайтостроение

Создание сайта Раскрутка сайта Заработок на сайте ...еще о сайтостроении

Автоматическая загрузка фреймовой структуры средствами JavaScript

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

Решений проблемы несколько. Начнем с простых - закончим сложными...

Решение №1. На каждой внутренней страницы разместить ссылку на главную страницу, на фреймовую структуру, обозвав ее например - перейти на главную, или еще как нибудь, на что фантазии хватит. Просто, но не солидно...

Решение №2. Автоматически при загрузке страницы вне фрейма загружать другую страницу, содержащую фреймовую структуру. Для этих целей придется использовать JavaScript. Этой страницей может быть например главная страница, но ваш посетитель может быть огорчен, что ему опять надо искать необходимую информацию, которую он, как ему казалось уже нашел в поисковике.

Пример:
<head>
. . .
<script>
if (parent.frames.length==0)
window.location.replace("index.html")
</script>
</head>

Этот код необходимо вставить в начало каждой страницы, которая может быть загружена вне фрейма. Скрипт проверяет загружена страница во фрейм или нет, если нет запускает файл index.html. как я уже сказал, способ простой, но посетитель огорчится...

Решение №3. Автоматически при загрузке страницы вне фрейма загружать другую страницу, но не главную, а специально созданную, содержащую описание фреймовой структуры конкретно для этой страницы. Эту страницу можно положить в отдельную папочку, назвать ее например ext (или опять же, на что хватит фантазии), и так для каждой страницы сайта. Думаю идея понятна. Желательно запретить индексацию папки поисковыми роботами в файле robots.txt. Недостаток, очень трудоемко, но посетитель будет доволен... Пример приводить не буду, см. предыдущий, отличие только в имени файла.

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

Пример (внутренняя страница):
<head>
. . .
<script language="JavaScript">
<!--
if (window.parent.frames.length == 0) {
location.href="index.html?"+location.pathname;
}
//-->
</script>
</head>

Скрипт проверяет загружена страница во фрейм или нет, если нет запускает главную страницу сайта и передает свое имя (имя файла) через адресную строку.

Пример (главная страница):
<head>
. . .
<script language="JavaScript">
<!--
var string = location.search;
var current_page=string.substring (1, string.length);
document.write('<frameset rows=100,* marginwidth="1" marginheight="1">');
document.write('<frame name="head" src="head.html" noresize scrolling=no>');
document.write('<frameset cols=150,* marginwidth="1" marginheight="1">');
document.write('<frame name="left" src="left.html" noresize scrolling=no>');
if (location.search == "") {
document.write('<frame name="right" src="right.html" noresize scrolling=auto>');
} else {
document.write('<frame src="' + current_page + '" name="right" noresize scrolling=auto>');
}
document.write('</frameset>');
//-->
</script>
</head>

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

P.S. Надеюсь, данная информация вам помогла. Сам долго искал решение этой проблемы, нашел его тут: "JavaScript: полезные функции (часть VI)" - хорошая статья, все очень грамотно и доступно описано. Огромное спасибо автору.


© HouseOfHorse.ru, 2009-2011


wwwFM.ru - радио онлайн, большой выбор радиостанций.