html: iframe с 100% высотой от содержимого

подскажите, можно ли как-то для iframe:

<iframe src='site.html' />

с помощью CSS (было бы идеально) или иными способами задать высоту такую же как у содержимого iframe, т.е. чтоб у iframe не появлялось бы вертикальной прокрутки, iframe была бы высотой ровно такой, как отображаемая внутри него страница


Ответы (1 шт):

Автор решения: ksa

иными способами задать высоту такую же как у содержимого iframe, т.е. чтоб у iframe не появлялось бы вертикальной прокрутки, iframe была бы высотой ровно такой, как отображаемая внутри него страница

Если материнская страница и страница в iframe с одного домена - мне удалось повлиять на высоту iframe вот таким скриптом...

<script>
//
function test(o){
    const oi = o.contentDocument || o.contentWindow.document
    o.style.height = oi.body.offsetHeight + 'px'
}
</script>
<iframe 
    onload='test(this)' 
    src='tmp.html' 
/>

Если домены разные - нужно настраивать обмен сообщениями между страницами через window.postMessage. Страница iframe должна принимать "запрос" на свою высоту и ответить на него.

P.S. Но мой пример имел некие отступы внутри iframe... Т.ч. придется значение oi.body.offsetHeight корректировать или пытаться убрать эти поля вокруг контента iframe.

→ Ссылка