Как заставить iframe занимать вертикальное пространство

Я хотел бы, чтобы iframe занимал столько места по вертикали, сколько необходимо для отображения его содержимого, а не для отображения полосы прокрутки. Это вообще возможно?

Есть ли обходные пути?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
9
0
4 631
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

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

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

Ответ принят как подходящий

Это должно установить высоту 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.

Очень удобно, ура. Возможно, стоит упомянуть, что это не будет работать так хорошо, если iframe находится в другом домене из-за той же политики происхождения.

ConroyP 16.10.2008 13:32

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

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

см. W3C DOCTYPE для примеров

У меня были проблемы как с IE, так и с FF, поскольку он отображал документ iframe в режиме «причуд», пока я не добавил DOCTYPE.

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

<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>

Обходной путь - не использовать <iframe> и код предварительной обработки на стороне сервера.

Это не всегда возможно, если только вы не собираетесь создавать собственный прокси-сервер, который переписывает ссылки в теле html ... это шутка.

ErikE 16.11.2010 20:37

Другие вопросы по теме