Я вижу, что этот вопрос задавался несколько раз, но ни одно из предложенных решений не работает для сайта, который я создаю, поэтому я снова открываю ветку. Я пытаюсь определить размер фрейма в зависимости от его содержания. И страница, которая содержит iframe, и ее исходная страница существуют в одном домене.
Я пробовал предлагаемые решения в каждой из следующих тем:
Я полагаю, что приведенные выше решения не работают, потому что, когда делается ссылка на body.clientHeight, браузер фактически не определил высоту документа.
Вот код, который я использую:
var ifmBlue = document.getElementById("ifmBlue");
ifmBlue.onload = resizeIframe;
function resizeIframe()
{
var ifmBlue = document.getElementById("ifmBluePill");
var ifmDiv = ifmBlue.contentDocument.getElementById("main");
var height = ifmDiv.clientHeight;
ifmBlue.style.height = (ifmBlue.contentDocument.body.scrollHeight || ifmBlue.contentDocument.body.offsetHeight || ifmBlue.contentDocument.body.parentNode.clientHeight || height || 500) + 5 + 'px';
}
Если я отлаживаю скрипт с помощью fire debug, высота клиента основного div iframe.contentDocument равна 0. Кроме того, body.offsetHieght и body.scrollHeight равны 0. Однако после завершения работы скрипта, если я проверю DOM элемента HTML iframe (с помощью отладки в огне) я вижу, что значение clientHeight в теле равно 456, а значение clientHeight внутреннего div равно 742. Это заставляет меня поверить, что эти значения еще не установлены при запуске iframe.onload. Итак, для одного из приведенных выше потоков я переместил код в обработчик событий body.onload исходной страницы iframe. Это решение также не сработало.
Любая помощь, которую вы можете оказать, очень ценится.
Спасибо
CJ