Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как узнать высоту документа загруженного в iframe?


Автор: JaguarSmith 7.1.2006, 02:48
Привет!smile

Собственно сабж!
Я пробовал так:
Код

<iframe id="_if" name="_if" class="g"  width="100%" src="01.htm" frameborder=0 onload="if_onload();"></iframe>
<script language="javascript" >
<!--
var n = 1
var max=61
_if.onload=if_onload();

function if_onload()
{
_if.height = _if.contentWindow.height
};
//--> 
</script>

но это походу не работает...smile
Идея в том чтобы айфрейм подстраивался по высоте под докумет который в него загружается(чтоб не было прокрутки).
smile Как правильно это сделать?

Автор: Sardar 7.1.2006, 16:11
Нет, так работать не будет. Вообще у каждого браузера свои примочки с высотой, зависящей ещё от режима(standards compliance, quirks) в котором браузер работает. Рабочий пример:

http://www.quirksmode.org/viewport/compatibility.html

Таким же образом у нас в VFAQ'е высота фрейма с контентом подгоняеться, работает на ура.

Автор: ezhikov 7.1.2006, 21:49
Когда-то я делал так (в IE работало, в FF нет)

Код

<iframe src="news.htm" name="news" id="news" frameborder="0" scrolling="no" 
    width=450  style="height:expression(news.document.body.scrollHeight+20);"><a href="news.htm">Новости</a></iframe> 

Автор: JaguarSmith 8.1.2006, 00:12
Спасибо ezhikov !
Но оно работает тока для первого документа загруженного в ифрейм...

У мну почемуто не получается поменять высоту фрейма "на лету"
я перепробовал:

Код

// _if - это мой ифрейм...

_if.height=y+50
_if.offsetHeight=y+50
_if.clientHeight =y+50
_if.style="height:"+y+50
_if.currentStyle="height:"+y+50


Но ничего не помогает smile

Зы. Sardar я честно пытался разобраться в том как работает ваш vfaq но для человека который ничего в этом не понимает - там слишком много скриптов smile
Добавлено @ 00:25
smile Урряя!!! Я допёр!!! Во как надо было:
Код

document.getElementById('_if').style.height=y+50

Автор: Sardar 9.1.2006, 15:53
Цитата(JaguarSmith @ 7.1.2006, 23:12 Найти цитируемый пост)
Sardar я честно пытался разобраться в том как работает ваш vfaq но для человека который ничего в этом не понимает - там слишком много скриптов

Возьми на quirksmode скрипт, что узнаёт высоту документа, уже готово, проверено, работает везде.

Автор: JaguarSmith 9.1.2006, 20:37
Да я сам уже написал (именно на основе quirksmode) работает в Опере Фаерфоксе и ИЕ:

Код

<iframe id="_if" name="_if" class="g"  width="100%" src="01.htm" frameborder=0 onload="if_onload();"></iframe>
<script language="javascript" >
<!--
function if_onload()
{
var x,y;
var test1 = _if.document.body.scrollHeight;
var test2 = _if.document.body.offsetHeight
if (test1 > test2) // all but Explorer Mac
{
    y = _if.document.body.scrollHeight;
}
else // Explorer Mac;
     //would also work in Explorer 6 Strict, Mozilla and Safari
{
    y = _if.document.body.offsetHeight;
}
 
document.getElementById('_if').style.height=y+50
};
// -->
<script>


Проверено на 60 страницах которые грузятся у меня в этот фрейм smile
Добавлено @ 20:38
В общем всем БОЛЬШОЕ СПАСИБО! smile

Автор: S.A.P. 1.4.2006, 11:45
Поднимаю тему. Перепробовал все, перечисленные тут решения (в том числе и http://www.quirksmode.org/viewport/compatibility.html), высота документа определяется правильно, но в Опере и Сафари прокрутка остается. Я говорю не о полосе прокрутки, а прокрутке фрейма колесом или средней кнопкой. Кто - нибудь знает как это обойти?

Автор: 12345c 1.4.2006, 14:03
(По теме, но не в ответ S.A.P.: ) Обнаружена особенность опредеелния высоты документа в Опере (7.54), по которой пришлось отказаться в ней от dociment.body.scrollHeight . Когда в документе генерируется плавающий (absolute) слой, это свойство оказывается высотой этого слоя, а не высотой основного потока документа.

Автор: Ciber SLasH 2.4.2006, 00:53
Цитата(S.A.P. @ 1.4.2006, 12:45 Найти цитируемый пост)
Я говорю не о полосе прокрутки, а прокрутке фрейма колесом или средней кнопкой.

А контент весь виден? или для полного просмотра нужно ещё крутить колесо?

Автор: S.A.P. 2.4.2006, 09:10
Контент виден весь. Можно конечно расширить фрейм пикселов на 50, но это будет безобразно. Ещё заметил, что если в документе, загружаемым в фрейм встречается много вложенных дивов, то скроллить даже Firefox начинает. Короче нужно просто запретить прокрутку жестко. Вешать scroll(0, 0) на onscroll фрейма - не годится.

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