2008-08-29 2 views

ответ

10

Это должно установить IFRAME высоту до высоты его содержания в:

<script type="text/javascript"> 
the_height = document.getElementById('the_iframe').contentWindow.document.body.scrollHeight; 
document.getElementById('the_iframe').height = the_height; 
</script> 

Вы можете добавить scrolling="no" к вашему IFRAME, чтобы отключить прокрутки.

Редактировать: Ой, забыли объявить the_height.

+4

Очень удобно, приветствия. Стоит упомянуть, что это не будет работать так хорошо, если iframe находится в другом домене из-за той же политики происхождения. – ConroyP 2008-10-16 09:32:44

0

Этот CSS сниппет должен удалить вертикальную полосу прокрутки:

body { 
    overflow-x: hidden; 
    overflow-y: hidden; 
} 

Я еще не уверен, о том, что занимают так много места по вертикали, как это нужно, но если я не могу понять, я буду видеть это из.

0

Добавление DOCTYPE декларации к исходному документу IFRAME поможет рассчитать правильное значение из строки

document.getElementById('the_iframe').contentWindow.document.body.scrollHeight 

см W3C DOCTYPE for examples

У меня были проблемы как с IE и FF, как это отдавая iframe документ в режиме 'quirks', пока я не добавил DOCTYPE.

Поддержка FF/IE/Chrome: .scrollHeight не работает с Chrome, поэтому я придумал пример javascript, используя jQuery для установки всех высот IFRAME на странице, основанной на содержимом iframes. ПРИМЕЧАНИЕ. Это для ссылочных страниц в вашем текущем домене.

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('iframe').each(function(){ 
      var context = $(this); 
      context.load(function(event){ // attach the onload event to the iframe 
       var body = $(this.contentWindow.document).find('body'); 
       if (body.length > 0 && $(body).find('*').length > 0) { // check if iframe has contents 
        context.height($(body.get(0)).height() + 20); 
       } else { 
        context.hide(); // hide iframes with no contents 
       } 
      }); 
     }); 
    }); 
</script> 
0

Обойти не использовать и препроцессирования код на стороне сервера.

+2

Это не всегда возможно, если вы не собираетесь создавать собственный прокси-сервер, который переписывает ссылки в html body ... это шутка. – ErikE 2010-11-16 17:37:32

Смежные вопросы