Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > фреймы


Автор: _lex 27.5.2007, 13:16
использую для своей работы фреймы, но вот проблема:

структура:
-------------------------------------------------------------------------
index.html
         |_ (через IFrame)        sections.html
                                                            |
                                                            |_menu.html
                                                            |_content.html

--------------------------------------------------------------------------
вопросы:
[list=1]
[*]как сделать так чтобы заголовок из content.html переходил в index.html
[*]Как подогнать размеры фрейма, куда загружается "sections.html" под высоту "content.html". Причем чтобы подгонки под фрейм с меню небыло.....
[list]

буду рад если это возможно, и вы чтолибо посоветуете....

Автор: webster 27.5.2007, 13:22
Не совсем понятна фреймовая структура, привидите код пожалуйста (и зачем использовать во фреймовой структуре IFRAME, разве последний не используется для "интеграции" в обычную HTML страничку, во фреймовой структуре используются сами фреймы, с любой степенью вложенности?)

Автор: _lex 27.5.2007, 13:35
у меня типа в странице встроен фрейм, и тама меню и контент... ну пример использования можно посматреть на том же FAQ винграда...

Автор: webster 27.5.2007, 14:42
Ну раз вы были на столько заняты, что даже не было возможности представить код, пришлось додумывать самому.
Итак мы имеем HTML-страничку со встроеным фреймом IFRAME - index.html :
Код
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Index</title>
</head>
<body>
<iframe src="sections.html" name="myiframe" style="height: 350px; width: 500px;"></iframe>
</body>
</html>
(у IFRAME изначально задана произвольная высота  - она нам понадобится в последующем для переопределения ее значения в зависимости от текущей высоты странички content.html)
Далее у нас представлен файл с фреймовой структурой sections.html который подключается и располагается в IFRAME-е :
Код
<html>
<head>
<title>Sections</title>
</head>
<frameset cols="20%,*">
    <frame src="menu.html" />
    <frame src="content.html" />
</frameset>
</html>
и соответственно два подключенных в эту фреймовую структуру файла - menu.html :
Код
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Menu</title>
</head>
<body>
    <div>This is my first frame</div>
    <div>Title this page is "Menu"</div>
</body>
</html>
и последний файл (с которым у нас собственно и будет происходить вся работа по передаче значения title и значения текущей высоты) - content.html :
Код
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Content</title>
<script type="text/javascript">
parent.parent.document.title=this.document.title;
function iframeheight()
{
parent.parent.document.getElementsByName('myiframe')[0].style.height=window.document.body.scrollHeight;
}
</script>
<style type="text/css">

</style>
</head>
<body onload="iframeheight();">
    <div>This is my two frame</div>
    <div>Title this page is "Content"</div>
    <div style="height: 1500px;"></div>
</body>
</html>
в нем установлен блок <div> высотой 1500px специально для того, чтобы съэмитировать произвольную динамическую высоту странички. Вместо parent можно смело использовать top.
Если работаете с <!DOCTYPE> то FF-у может не понравиться вышеизложенная конструкция, надо указать значение в 'px':
Код
parent.parent.document.getElementsByName('myiframe')[0].style.height=parseInt(window.document.body.scrollHeight)+'px';
Незначительные "остаточные" полосы прокрутки определяются установленными по-умолчанию у браузеров margin-ы и padding-и у элементов HTML-разметки, поэтому необходимо у каждой HTML-странички  в стилях обнулить эти параметры:
Код
html,body,div
{
margin: 0; padding: 0; border: 0;
}



Автор: _lex 27.5.2007, 15:57
огромное спасибо

Автор: _lex 28.5.2007, 14:10
новый вопрос, как контент во фрейм грузится MediaWIKI, заголовок меняется, а высота остается той-же. Возможно это одно из средств защиты вики от показов во фрейме. Без модернизации "wikibit.js" страница отказывалась загружаться во фрейм и загружалась как страница.

маломальский пример можно увидить на сайте, ради которого я и мучаюсь:

3dmaxhelp.com

Автор: webster 28.5.2007, 20:06
Чтобы у вас сработала функция изменения размеров окна вы должны были ее проинициализировать в момент окончания загрузки содержимого сайта в теге <body>:
Код
<body onload="iframeheight();">
Или попробовать "повесить" вызов этой функции на:
Код
window.onload=function iframeheight()
{
parent.parent.document.getElementsByName('myiframe')[0].style.height=window.document.body.scrollHeight;
}
(только поправить код)

Автор: _lex 28.5.2007, 21:17
Спасибо.....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)