Почему функция определения высоты 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 шт):
Попробуйте вместо 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";
}
Вероятно, ты не единственный, кто выполняет код в onload. Соответственно, если какие-то данные ещё не пришли и не отрисовались, ты получаешь одну высоту, а если отрисовались, то другую.