Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Iframe и высота страницы 
:(
    Опции темы
oksale
Дата 26.10.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 17.6.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 9



Сделала так, чтобы фрейм был на высоту страницы, без полос прокрутки. 
Но проблема в том, что в firefox, когда отрабатывает скрипт во фрейме и в результате высота фрейма уменьшается, высота самой страницы не изменяется. В итоге получается под фреймом много пустого места.

Посмотреть можно здесь: _http://auweb.ru/test1/katalog.htm

Код:
Код

<script language="JavaScript" type="text/javascript">
<!--
function resize_iframe(){
moz=document.getElementById&&!document.all;
 if(!moz)
 {
    document.getElementById('main').height=window.frames['main'].document.body.scrollHeight;
 }
 else
 {
    document.getElementById('main').height=window.frames['main'].document.height+20;
 }
}
//-->
</script>


<iframe name="main" id="main" width='100%' onload="resize_iframe();" valign='top' src="..." scrolling="no" frameborder="0">
</iframe>




--------------------
WBR, oksale
PM MAIL ICQ   Вверх
12345c
Дата 27.10.2006, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Опыт на примере показал, что FF попросту не успевает определить свою высоту в момент onload().

Более того, на приведённом ниже примере и IE перестаёт успевать отрисовать фрейм в момент onload. А FF начинает успевать.
(Снимите setTimeout,  увидите.)
Решаем просто - небольшая "символическая" задержка в знак лояльности к тотатьной убогости движков smile.
Код
<HTML><HEAD><title>test v FF</title>
  <META http-equiv="Content-Type" content="text/html; charset=windows-1251">
</HEAD>
<BODY leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<script>d=document
s='1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>22222'
</script>
<a href=javascript:top.frames.main.document.write(top.s+top.s+top.s);top.frames.main.document.close(); target=main>GGGGGGGGGGGGGGGGGGGGG</a><br>
<a href=javascript:top.frames.main.document.write(top.s);top.frames.main.document.close(); target=main>GGGGGGGGGGGGGGGGGGGGG</a><br>

<script>moz=!d.all;
function resize_iframe(){
 if(!moz) {
  //alert(frames['main'].document.body.scrollHeight);
    d.getElementById('main1').height=frames['main'].document.body.scrollHeight;
 } else {
  //alert(frames['main'].document.height+20);
    d.getElementById('main1').height=frames['main'].document.height+20;
}}
</script>
@@@
    <iframe name="main" id="main1" width='50%' onload="setTimeout(resize_iframe,1)" valign='top' src="" scrolling="no" frameborder="1"></iframe>@@@
</BODY></HTML>


Однако, с Оперой 9.01 всё заметно веселее: не уменьшает высоту фрейма document.body.scrollHeight, потеряла такую способность.

С великим удивлением обнаруживаем, что если фрейм в ней больше документа, то высота считается высотой фрейма, а если меньше - то высотой документа. На практике, оказывается, - надо сначала уменьшить фрейм до разумного минимума, потом подождать, потом измерить, потом увеличить, если документ больше по высоте.
(Писать код под неё не буду, потому что по-хорошему надо проверить все Оперы от 8.х, не появился этот финт ещё в них, потом выбрать метод определения версии Оперы, потом писать.)

Это сообщение отредактировал(а) 12345c - 27.10.2006, 20:01


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0832 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.