Почему функция определения высоты iframe каждый раз определяет разные значения?

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

Код функции:

function resizeIframe(iframe) { let elem = document.getElementById('myFrame'); let size=elem.contentWindow.document.body.scrollHeight; elem.style.height = size + "px"; }

Во время каждой загрузки страницы, содержащей iframe, высота iframe почему то устанавливается разная. Содержимое страницы, загружаемой в iframe, неизменно, как и ширина окна браузера. Почему всегда задается разный height у iframe и как это побороть?


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

Автор решения: Sergey K.

Попробуйте вместо elem.contentWindow.document.body.scrollHeight брать elem.contentWindow.document.body.offsetHeight

function resizeIframe(iframe) { 
  let elem = document.getElementById('myFrame'); 
  let size=elem.contentWindow.document.body.offsetHeight; 
  elem.style.height = size + "px"; 
}

→ Ссылка
Автор решения: Qwertiy

Вероятно, ты не единственный, кто выполняет код в onload. Соответственно, если какие-то данные ещё не пришли и не отрисовались, ты получаешь одну высоту, а если отрисовались, то другую.

→ Ссылка