Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Фреймы и страницы.

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

GeRUb



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток.
Не могу решить вот такую задачу:
Имеется страница фреймсета. Она индексная на сайте. Все работает нормально.
Но, когда юзер заходит через поисковик, то открывается страница, которая должна быть во фрейме, а она без него.    
 
Вопрос как сделать, чтобы открытая страница переоткрылась в своем фрейме.
Сильно не ругайтесь, я плохо шарю в скриптах .
 
Проверку на страницах сделал так:

Код:
<script language="JavaScript">
if (self == top) {
    alert("Высшее окно.No frame.");
         location="frame1.html";
//тут должна быть функция открытия окна с фреймами и подгрузка этой страницы туда
//алерты стоят для отладки
}
else {
    alert("Документ находится в наборе фреймов.");
}
</script>

 
location="frame1.html"; - открывает мой фрейм, но со страницами по дефолту.
А мне надо с текущей.
 
Как это сделать?  
Очень прощу с примерами, т.к. плохо шарю в этом деле.  

Всего записей: 233 | Зарегистр. 08-02-2009 | Отправлено: 16:17 01-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeRUb

Цитата:
А мне надо с текущей.  

передаете нужную страницу через куку/локальное хранилище (html5) или как hash или get параметр в url переброски - потом читаете и загружаете нужную страницу.
 

Цитата:
Очень прощу с примерами

когда перекидываете с хэшем, то location='frame1.html#page2.html';
во фрейме берем window.location.hash.substr(1), это будет page2.html - его и грузим

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 20:49 01-03-2017
GeRUb



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Mavrikii
...во фрейме берем window.location.hash.substr(1), это будет page2.html - его и грузим

Спасибо.  
Однако,  не получается отловить событие онлоад во фреймовой странице.
куда надо воткнуть обработку window.location.....
Т.е. Саму процедуру я сделал:

Код:
<script language="JavaScript">
function getVariable()
{
alert("It is frameset list open!!!");
 var $list = window.location.hash.substr(1);
    if ($list!="")
        {  
        top.frames."BodyFr".src=$list;      
        alert($list);
        }
else
        {
        alert("It is frame open = 2");
        }
}
</script>

 
И вот не могу её запустить. Как должна выглядеть команда онлоад и где должна находиться?  
А вот это правильно?
Код:
top.frames."BodyFr".src=$list;
- так сработает ?

Всего записей: 233 | Зарегистр. 08-02-2009 | Отправлено: 09:40 02-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeRUb

Цитата:
Как должна выглядеть команда онлоад и где должна находиться?  

да хоть у body (но будет ждать пока не загрузятся все картинки)
<body onload='вызов js функции'>
 

Цитата:
 
top.frames."BodyFr".src=$list;
- так сработает ?

нет
top.frames["BodyFr"].src
но не помню, нужен там домен в src или нет - попробуйте

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 20:52 02-03-2017
GeRUb



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
После долгих мучений пришел к такому:
Страница, которую проверяем где она открыта вставил

Код:
<script language="JavaScript">
if (self == top)
{
setTimeout('location="index.html#noname1.html"',3500);
}
</script>

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

Код:
function getVariable()
{
    var mystr = parent.window.location.hash.substr(1);
    if (mystr !== '')
        {
               location=mystr;  //"noname1.html";    
        }
}
</script>

Только не понятно, почему это не срабатывает в хроме, а в опере и ИЕ - работает.
(Проверяю локально.)
 
Добавлено:
P.S.
И еще, если в процессе загрузки были ошибки, то эти скрипты вообще не работают....
 
Добавлено:
Да, вот еще вопрос.  
Поставил кнопку на странице, которая грузится в верхний фрейм.
Эта кнопка не активна в хроме, т.е. вообще ведет себя как картинка....
Но в ИЕ и Опере - работает нормально. Что это за х...???

Всего записей: 233 | Зарегистр. 08-02-2009 | Отправлено: 16:34 03-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeRUb

Цитата:
Поставил кнопку на странице, которая грузится в верхний фрейм.  
Эта кнопка не активна в хроме,

телепатов нет.
 

Цитата:
Только не понятно, почему это не срабатывает в хроме, а в опере и ИЕ - работает.

некоторые браузеры не любят onload
данный код можно обрабатывать сразу в шапке.

Всего записей: 15101 | Зарегистр. 20-09-2014 | Отправлено: 20:01 03-03-2017
GeRUb



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Докладываю .
Вопрос с возвратом в фрейм успешно решен.
Нарыл примеры, и из 4х разных слепил себе один рабочий.
Оказалось, что скрипт в фреймсете обрабатывается только если страница лежит на сервере, локально - отказывается.
С кнопкой пока потрахаюсь, скорее всего накосячил .

Всего записей: 233 | Зарегистр. 08-02-2009 | Отправлено: 23:09 03-03-2017
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Фреймы и страницы.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru