#javascript #jquery #iframe
#javascript #jquery ( jquery ) #iframe — фрейм
Вопрос:
У меня есть iframe, и я хочу изменить размер высоты в соответствии с содержимым, которое может измениться, если пользователь совершит определенные действия.
Мне не нужна полоса прокрутки, чтобы она отображалась как обычная страница
Ответ №1:
Используйте div вместо iFrame. Попробуйте опубликовать несколько примеров кода, чтобы мы могли помочь вам больше. Как правило, вы не можете изменять размер iframe на основе его содержимого.
Комментарии:
1. Я не могу использовать div, я использую jsf 2.1, у меня есть компонент загружаемого файла, который не может получить его значение без отправки всей формы, а моя главная страница, с другой стороны, не может отправлять все с помощью ajax, поэтому я помещаю компонент загружаемого файла в ифрам
Ответ №2:
scrollHeight является основным свойством для получения высоты содержимого IFRAME следующим образом:
contentWindow.document.body.scrollHeight
После загрузки IFRAME вы можете изменить высоту, выполнив следующие действия:
<script type="text/javascript">
function resizeIframe() {
var iFrameID = document.getElementById('idIframe');
if(iFrameID) {
var cont = iFrameID.contentWindow.document.body || frame.contentDocument.body
// here you can make the height
iFrameID.height = cont.scrollHeight "px";
}
}
</script>
При событии загрузки IFRAME вы можете вызвать эту функцию:
Но конечно .. iframe не должен загружаться с другого веб-сайта
Комментарии:
1. Это не сработало, я создал таблицу в iframe, где высота iframe должна составлять 230 пикселей высота этой таблицы, мой вопрос в том, что загрузка происходит после загрузки iframe, поэтому после загрузки таблицы, почему я всегда получаю высоту таблицы «null»??
2.
function resizeIframe() { alert("in resize"); var iFrameID = document.getElementById('frame_name_here'); var myheight = $('#records-view-table').height(); if (iFrameID) { iFrameID.height = 300 myheight "px"; alert(myheight "fff"); } }