автовысота iframe

Я искал везде, включая здесь, и не смог найти хорошего решения. Я столкнулся с этим, и это работает во всех браузерах, кроме Firefox и IE :( Помогите?

jQuery(function() {
    sizeIFrame();
    jQuery("#ifrm").load(sizeIFrame);
});

function sizeIFrame() { 
    var videoBrowser = jQuery("#ifrm");
    var innerDoc = videoBrowser.get(0).contentDocument ?
        videoBrowser.get(0).contentDocument.documentElement :
        videoBrowser.get(0).contentWindow.document.body;
    videoBrowser.height(35);
    videoBrowser.height(innerDoc.scrollHeight + 35);
}

и это в том же домене, и вот мой <iframe>

<iframe id="ifrm" src="http://localhost:8080/linkconsulting/temp.html" width="100%" frameborder="0" scrolling="no"></iframe>

Сейчас я тестирую localhost, но позже он все равно будет в том же домене.

Обновление: Итак, я заметил, что это не работает, потому что кажется, что это мешает плагину tiny.scrollbar или наоборот. Не знаю, что здесь делать :(


person Andres    schedule 24.11.2011    source источник


Ответы (3)


У меня такое ощущение, что это не работает, потому что высота вычисляется до загрузки документа. Если бы вы вызвали sizeIFrame в событии document.ready, это могло бы иметь значение.

В вашем IFrame попробуйте этот код:

jQuery(function(){
   parent.sizeIFrame();
}

Обновление: согласно нашему чату, вы можете получить высоту документа в IFrame с помощью:

parent.jQuery(document).height()

Я бы сказал, чтобы передать высоту в качестве параметра вашей функции.

person Matthew    schedule 24.11.2011
comment
в IE я получил сообщение об ошибке Сведения об ошибке веб-страницы Пользовательский агент: Mozilla/4.0 (совместимый; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729 Media Center PC 6.0 .NET4.0C .NET4.0E InfoPath : localhost:8080/linkconsulting/temp.html Сообщение: Ожидаемый объект Строка: 7 символов: 1 Код: 0 URI: localhost:8080/linkconsulting/temp.html - person Andres; 24.11.2011
comment
jQuery(function(){ У меня такое чувство, что я забыл ссылку на jquery... хе-хе - person Andres; 24.11.2011
comment
@Andres, в этом случае вы можете использовать ‹body onload=parent.sizeIFrame();› - person Matthew; 24.11.2011
comment
теперь я получаю Object Required в строке 36, и в этой строке это: videoBrowser.height(innerDoc.scrollHeight + 35); - person Andres; 24.11.2011
comment
@Andres присоединяйтесь ко мне в чате JavaScript. - person Matthew; 24.11.2011

Вы используете jQuery, попробуйте использовать плагин iFrameAutoHeight.

person jkriddle    schedule 24.11.2011
comment
хорошо, я тоже попробовал это, и все еще нет контента в IE 8 chrome да - person Andres; 24.11.2011

Ну, в итоге я выбрал другой подход. Я получил содержимое внутри iframe и вставил его в div. Вот код на случай, если он кому-то еще понадобится. Спасибо всем за ваше терпение и большую помощь.

<script>
function getFile(){

var content = jQuery('#servercontent')[0];

var ifrm = jQuery('#ifrm')[0];

content.innerHTML = ifrm.contentDocument.body.innerHTML;

}
</script>
<body>
 <div id="servercontent"></div>
 <iframe id="ifrm" src="webinsamedomain.com" width="100%" frameborder="0" scrolling="no" style="display:none;"  onload="getFile();" ></iframe>
</body>
person Andres    schedule 07.12.2011