![]() |
Как задать высоту Iframe?
Подскажите, люди, как сделать так, высоту IFRAME, равной его содержимому?
Указать в процентах-пикселях не могу - фиг его знает, что в него загружать прийдется, а штучки типа Overflow:visible не работают :confused: :confused: :confused: |
Я сам задавался этим вопросом долгое время и так ничего и не нашел, да и вопрос такой уже поднимался тут на форуме....
Но вот недавно натолкнулся на такую вещь, попоробуй использовать document.body.scrollWidth и document.body.scrollHeight соответственно для загруженного документа чтобы определить его размер - ну а дальше дело техники ресайзить, я сам не пробовал, но по идее должно работать! |
Ребята, вас не ломает таким гемороем страдать? Подгрузили в iframe, что нужно, а там *.cloneNode() и в основной документ.
|
2RaZEr чего-то я не понял как с помощью этой функции решить поставленную задачу изменения размера ифрейма?
|
Цитата:
|
Цитата:
|
|
2RaZEr Если последний пост был мне, то я теперь решительно запутался: в данном топике решается совсем иная задача никак не связанная с определением высоты фрейма (а именно такая стояла задача сдесь). Если Вы указывали на объяснение использования *.cloneNode() - то я и сам вкурсе что это такое и с чем его едят. И не в ограничениях хостинга проблема (у меня платный хостинг, есть и SSI, и PHP и все что надо...) просто как решить поставленную в данном топике проблему????
|
А почему именно я так пристал к данному вопросу я все-таки объясню - мне тоже было бы очень неплохо решить подобную проблему.
Конкретный пример (точнее конкретно стоящая передо мной задача): Есть сайт, все сделано на инклюдах, но в одну из страниц вставлено голосование, для того чтобы не обновлять всю страницу из-за ответа (что сильно раздражает пользователей) голосование находится в теге <iframe>. Я написал что-то вроде CMS для своего сайта, поэтому создание и управление голосованиями происходит из формы управления, где количество ответов заранее не задано. Так как голосование находится в контексте страницы, то присутствие полос прокрутки очень нежелательно. Сейчас после создания голосования параметры тега <iframe> подбираются руками после каждого изменения, более того, если пользователь изменит размер браузера, то тоже ничего хорошего не выйдет. Посему я и хочу сделать размеры фрейма в зависимости от ФАКТИЧЕСКОЙ высоты и ширины содержания фрейма! |
Я говорю о том, что проще подгружать то же голосование в невидимый фрейм, а потом из него, при помощи cloneNode() вставлять в основной документ. Это решает все проблемы с высотой, шириной и т.д.
|
RaZer
Дай пример а.. а то мы ламеры.. твои короткие и умные ответы не сразу рубим |
Цитата:
1) Обеспечение полной совместимости со всеми браузерами 2) При голосовании опять же должна быть перезагрузка сначала фрейма, потом перенос на место 3) И, наверное главное: при загрузке сайта, пока полностью не загрузится невидимый фрейм - сильно может расползтись структура и дизайн сайта, т.к. там не будет ничего сначала, а потом оно будет разъезжаться!!! |
Цитата:
|
Итак, проблемы реальные....
Помочь посуществу нам так и не помогли... Поэтому разбираться пришлось самому... Итак, Anthony, я был не совсем прав в первом своем посте: document.body.scrollHeight - заданная высота фрейма (ну тоесть какая сейча у него она фактическая), а нужно нам document.body.offsetHeight - это какраз "полезная высота", тоесть сколько занимает содержимое фрейма!!! Никакие листинги приводить не буду, потому что дальше дело техники - пишется функция из одной строчки и вешается на событие onload() основного документа. Вот и все!!! Как всегда оказалось что самое лучшее решение на поверхности!!! |
Огромное спасибо, Hubbitus. То что document.body.scrollHeight отвечает за реально имеющиеся размеры я в ходе эксперимента уже установил. Теперь начну учить document.body.offsetHeight. :p
И еще вопрос в догонку: В какой книжке можно сие знание почерпнуть. Так, на будущее, а то в моей таких умных слов нету:blin:, а быть умным иногда так хочется..... |
Если я что-то непонятно написал, то не стесняйся справшивать (можешь в привате или по асе..)...
Кстати, если тебе (или кому-то другому) надо то я могу выслать код примера, или сдесь выложить... я просто не думаю что это целесообразно. А вообще я очень люблю последнее время вот этот справочник |
scrollHeight or offsetHeight
scrollHeight or offsetHeight - this is the question.......
И, все-таки, я его почти сделал!:biggrin: Только вот удалось сие именно через scrollHeight. Одно "но" имеется: напихал я в body из фрейма 38 килопапугаев текста, а scrollHeight посчитал его за одну строчку... Короче, затолкав текст в div, мне почти удалось достичь результата с какой-то идиотской погдешностью в 0.5-5.0 строчек. Да здравствует метод научного тыканья и стольник мартышек-машинисток! Из, подвергавшихся исследованию scrollHeight, оffsetHeight & clientHeight: scrollHeight - приблизительно выдает "полезную" высоту. оffsetHeight - "действительные" размеры. clientHeight - чуть меньше, чем предыдущий, так что, очевидно, то же самое, только с учетом полей - а то я сам посчитать не мог?(кстати, жаль Нетскейпа нету - проверить, а то прошлый раз он мне клиентскую ширину вместе со скроллингом посчитал) |
Цитата:
Цитата:
|
Сдаюсь!
ОК, блин! Сдаюсь.
Пишу в ифреймовском хтмльнике на onload тега body: top.document.getElementById('ifr').style.height=document.body.scrollHe ight; и опять остается скролл на пару строк. Что и как надо было? В iframe я подгружал эту же страничку, так она заканчивается на чубчике того колобка, что нарисован на нижнем баннере. |
Цитата:
Цитата:
document.getElementById('myframe').height=document.getElementById('myf rame').document.body.offsetHeight; И никакого скрола у меня нету! Только учти я сдесь для примера жестко задал ширину фрейма, и никак не учитываю ее, если нужно, то неоюходимо как-то обрабатывать изменение обоих измерений... (думаю что не сложно) Цитата:
|
В прямом смысле ЭТУ. Сохранил страничку форума, потом - искалечил <body>. А колобок - он внизу с надписью, что: "А баннера нет". Ну, это - не важно. Я сейчас попытаюсь внять Вашим советам... Только вот события onload у iframe, по-моему, нет.....
|
Цитата:
Итак что у меня получилось и что работает: Я сохранил ЭТУ ЖЕ страницу в файл imho.htm (ну чтобы во фрейм грузить) и гружу в файле, содержание которого следующее: Код:
<html>Хотел бы добавить, что если в функции вместо body.offsetHeight; использовать body.scrollHeight; - то результат тотже(но только в некоторых случаях). А разница оказывается в том что scrollHeight - учитывает только видимую часть страницы, а offsetHeight - все. Короче об этом сдесь подробно написано. И еще одно важное замечание: почему-то это все работает только с локальными файлами, а с удаленными у меня не пашет (может у тебя нормально будет?)!!! |
| Часовой пояс GMT +4, время: 01:27. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.