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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

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

Slippery



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как динамически менять высоту IFRAME  в соответствии с высотой загружаемого в него документа (стайлом запретил на нем скролы  но под ним идет дальше страница и не хочется делать айфрэйм заведомо большим)

----------
... - говорите, говорите, я всегда зеваю, когда мне интересно!
---
халявный генератор анимации на мобилу

Всего записей: 326 | Зарегистр. 31-10-2002 | Отправлено: 17:10 27-11-2002
KostiKL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне тоже про это интересно было бы узнать!

Всего записей: 669 | Зарегистр. 04-02-2003 | Отправлено: 13:24 05-07-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Slippery
Остается только выяснить.. как определить высоту загружаемого документа... если он пытается подстроиться под данное ему окно ?)

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:26 05-07-2003
KostiKL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Ты к Slippery не обращайся - ты ж видишь у него этот пост еще 2002 года!
Я эту тему поднял потому что у меня та же проблема, а ему тогда на это вопрос никто не ответил!
Вот! Так что... говори со мной!... считай, что я эту тему замутил!

Всего записей: 669 | Зарегистр. 04-02-2003 | Отправлено: 23:43 05-07-2003
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KostiKL
Не важно.. сначала скажи, как ты будешь определять высоту документа.. Скажу сразу ответ - никак..

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:44 05-07-2003
KostiKL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никак!
 
Добавлено
В смысле я не знаю как, но уверен, что как-то можно!
Ну я не знаю.... нельзя было сделать чтоб IFRAME мог быть резиновым, как тыблицы??!!

Всего записей: 669 | Зарегистр. 04-02-2003 | Отправлено: 23:46 05-07-2003
russkiy



Запрет на пост
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KostiKL
 
можно, но работать будет только в ИЕ
как? смотри тут
http://fronda.spb.ru/calculator/index.html
я там сделал все что мог

----------
Мне хочется, чтобы была и абсолютная правда, и окончательная справедливость, чтобы было добро и зло. Но есть только свет и тьма. И они существуют сами по себе.

Всего записей: 593 | Зарегистр. 17-07-2002 | Отправлено: 11:33 06-07-2003
KostiKL



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

Код:
 
function Onload()
{
if (navigator.appName.indexOf("Netscape")== -1)
{

document.all('chair').height="100%";
document.all('table').height="100%";
document.all('calcfunc').height="100%";
};
};
 

 
Но ведь он подгоняет размер фрейма не под его содержимое, а под размер контейнера, в котором он лежит (в твоем случае под размер ячейки таблицы)...
У меня задача несколько другого плана!

Всего записей: 669 | Зарегистр. 04-02-2003 | Отправлено: 12:38 06-07-2003
russkiy



Запрет на пост
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KostiKL
ааа.. прости, невнимательно вопрос прочитал...
вот копай в эту сторону
 

Цитата:
height, width NN 4  
 
Эти свойства в NN4+ определяют в пикселах размер текущего окна или фрейма. Если размер документа меньше размера окна, свойства учитывают пустое пространство. Если больше - то и неотображаемую область документа. Соотвесствующие свойства IE - document.body.scrollHeight|scrollWidth.
 
 



----------
Мне хочется, чтобы была и абсолютная правда, и окончательная справедливость, чтобы было добро и зло. Но есть только свет и тьма. И они существуют сами по себе.

Всего записей: 593 | Зарегистр. 17-07-2002 | Отправлено: 16:21 06-07-2003
Slippery



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Давно ето было - но трогда проблема решилась так -
в самом низу каждой из загружаемых страниц был добавлен элемент (любой) ему было дано ID="kukuku" а в скрипте прописано что-то типа  

Код:
 
function Onload()
{
parent.document.getElementById("myIframe").style.height=document.getElementById("myIframe").style.top- parent.document.getElementById("myIframe").style.top;
}
 

может я ошибся в чем-то если кому не интерестно копаться самому - завтрва поищу где это было и напишу точный код

Всего записей: 326 | Зарегистр. 31-10-2002 | Отправлено: 00:45 07-07-2003
KostiKL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
russkiy
О!
Кажись оно... буду пробовать!
Саписибо тебе большое человеческое!
 
Добавлено
Slippery
Обязательно поищи!
Оно мне очень надо!

Всего записей: 669 | Зарегистр. 04-02-2003 | Отправлено: 00:46 07-07-2003
Slippery



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
нашел этот код -  значит как я и сказал тело каждого загружаемого в Iframe документа заканчивается так

Код:
 
   ...
<span id="kuku" style="position:relative;"></span>
</BODY>
 

а так же  добавлен такой скрипт

Код:
 
<script language="JavaScript">
<!--  
function changeFrameheight()
{
if(parent.document.getElementById("myIframe"))
{
if(!document.all.getElementById("kuku")) parent.document.getElementById("myIframe").height=600;
else parent.document.getElementById("myIframe").height=document.getElementById("kuku").offsetTop;
}
 
if((document.readyState!="loaded")&&(document.readyState!="complete")) setTimeout('changeFrameheight()',100);
}
changeFrameheight();
// -->
</script>
 

Работает в любом IE и NN  

Всего записей: 326 | Зарегистр. 31-10-2002 | Отправлено: 16:13 07-07-2003
KostiKL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Slippery
Эт конечно выход...
Но какой то через "зад" (я извиняюсь)...
Когда child говорит parent'ту каким он должен быть!
Че т тут нелогичное есть, но вообще выход, хотя я его врядли буду применять, потому что не имею возмодности втыкать такой кусок в каждый загружаемый кусок, т.к. эти куски совсем не я пишу.. ВОТ!!

Всего записей: 669 | Зарегистр. 04-02-2003 | Отправлено: 20:18 07-07-2003
ZiLot



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

Цитата:
отому что не имею возмодности втыкать такой кусок в каждый загружаемый кусок, т.к. эти куски совсем не я пишу.. ВОТ!!

А можно по-русски? Я лично, ничерта не понял...

Всего записей: 936 | Зарегистр. 12-11-2002 | Отправлено: 21:35 07-07-2003
KostiKL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZiLot
Slippery в своей интерпретации решения этой проблемы вставлял выше описанный им же скрипт в каждую загружаемую во фрейм страницу!!!
У меня такие манипуляции делать возможности нету, потому что загружаемые в плавающий фрейм страницы пишу не я, а пользователи моего сайтика!
ВОТ! Вроде понятно написал!

Всего записей: 669 | Зарегистр. 04-02-2003 | Отправлено: 10:26 08-07-2003 | Исправлено: KostiKL, 10:33 08-07-2003
Slippery



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KostiKL
согласен с тобой решение не ахти какое,  
а вот по поводу "...возможности нету...пишу не я, а пользователи ..." - так у меня именно такая ситуация была, этот код я поместил в темплет а все что писали пользователи загружалось потом с этим темплетом (конечно же я не вставлял этот код ручками в каждый файл) - это сайт на пхп+темплейты
а вообще может надо поискать совсем другое решение (без фрэйма) - я в итоге остановился на таком :  
все что пишут юзеры складируется в базу данных ,а потом скрипт создающий страничку вынемает это и впихивает в нужное место

Всего записей: 326 | Зарегистр. 31-10-2002 | Отправлено: 10:54 08-07-2003
KostiKL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Slippery
У меня в общем то так и было сделано  

Цитата:
все что пишут юзеры складируется в базу данных ,а потом скрипт создающий страничку вынемает это и впихивает в нужное место

пока мне не стрельнуло все это на халявный буржуйский хостинг выложить!
А там проблемы с кодировками начались: чтобы что то динамически сформировать - надо было со строковыми переменными работать, а русский текст прошедший через строковую переменную хрен знает во что превращался!
Вообще эту проблему тоже прорабатываю, см.
http://forum.ru-board.com/topic.cgi?forum=31&bm=1&topic=3152#1
 
Поэтому и пришлось вернуться к IFRAME'у и загружать не из базы, а готовые странички!

Всего записей: 669 | Зарегистр. 04-02-2003 | Отправлено: 11:05 08-07-2003
Cheery



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

Код:
 
<script language="JavaScript">
function doResize()
{  
var _doc=document.getElementById('linksframe').contentWindow.document.body.scrollHeight;  
document.getElementById("framediv").style.height = _doc+10;
}
</script>
<div align="center" id="framediv">  
<iframe id="linksframe" onLoad="doResize();" src="/page.htm" name="linksframe" scrolling="no" frameborder="0" width="50%" marginwidth="0" marginheight="0" allowtransparency="true" background-color="transparent"></iframe></div>

работает в IE, Mozilla.. не работает в Opera..
 

Код:
 
var _doc=document.getElementById('linksframe').document.body.scrollHeight;  
document.getElementById("framediv").style.height = _doc+10;

работает в Opera, хреново работает в IE, не работает в Mozilla..
 

Код:
var _doc=document.frames('linksframe').document.body.scrollHeight;  
document.getElementById("framediv").style.height = _doc+10;

 
Работает в IE, Opera, не пашет в Mozilla.. млин.. задолбался.. можно ли сделать, чтобы работало всюду без if и так далее?
зы: на прозрачность не обращать внимания - знаю, что в Опере не пашет...
зызы: отбой.. решение нашел тут
http://www.kaali.co.uk/index.pl?art=94
 
 
Решение


Код:
Cross bowser iframe auto-resize script  
 
 A useful script to automatically resize an iframe (height and width) to fit contents in. No scrollbars ever again!! I use this to display a DHTML site tree inside an iframe. The height of the iframe is dynamically set to contain the tree contents without displaying the vertical scrollbars.
 
 
 
This is a cross browser script and I have tested it in IE, Netscape (Mozilla), Opera and others that I could get my friends to help me out with.
 
 
To test this script create an html page, something like:
 
<html>
<head>
        <title>Cross bowser iframe auto-resize script</title>
</head>
<body>
 
<script type="text/javascript">
function autoIframe(frameId){
        try{
                frame = document.getElementById(frameId);
                innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
                objToResize = (frame.style) ? frame.style : frame;
                objToResize.height = innerDoc.body.scrollHeight + 10;
        }
        catch(err){
                window.status = err.message;
        }
}
</script>
 
<table width="300" cellspacing="0" cellpadding="0" border="0">
<tr><td><iframe id="tree" name="tree" src="tree.htm" onload="if (window.parent && window.parent.autoIframe) {window.parent.autoIframe('tree');}"></iframe></td></tr>
</table>
 
</body>
</html>
 
 
Call it iframe.htm or anything else that you want. Also create an html page called tree.htm or any other page that you want to display in the iframe. Make sure that the iframe.htm and the tree.htm are in the same domain.
 
Now point your browser to http://yourdomain/iframe.htm and see the magic yourself!!
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:27 18-10-2004 | Исправлено: Cheery, 19:35 26-10-2004
Gamer05

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Решение помогло, но... Есть одно "но"!
Дело в том, что я загружаю во фрейм разные страницы, в зависимости от параметра, получаемого с помощью JS, и выглядит это следующим образом:

Цитата:
<script type="text/javascript">
a = getParam("id");
if (a==0)
{
 a = "000";
}
document.write("<iframe src='http://rgkript.ru/html/college/"+ a +".html' width='100%' height='665' frameborder='0' name='fr3'></iframe>");
</script>

У меня небольшой опыт работы с JS, поэтому я не могу совместить две эти функции. Может кто-нибудь что-нибудь посоветует?

Всего записей: 7 | Зарегистр. 06-12-2007 | Отправлено: 12:02 06-12-2007
SPeller



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
document.write("<iframe src='http://rgkript.ru/html/college/"+ a +".html' width='100%' height='665' frameborder='0' name='fr3' onload="if (window.parent && window.parent.autoIframe) {window.parent.autoIframe('tree');}"></iframe>");  
 
?

Всего записей: 259 | Зарегистр. 11-01-2006 | Отправлено: 15:37 07-12-2007
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » Интернет » Web-программирование » Динамическое изменение размеров IFRAME


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru