2015-09-30 5 views
2

В моем текущем сценарии у меня есть страница, загружающая iframe. Содержимое iframe не может быть определено заранее, поэтому мне нужно динамически регулировать размер с помощью javascript. Код я использую для достижения этой цели заключается в следующем:Изменение размера iframe, когда содержимое меньше размера по умолчанию (300x150)

newIframe.onload = function() { 
    var cw = newIframe.contentWindow; 
    var doc = cw.document; 
    var body = doc.body, 
     html = doc.documentElement; 

    var height = Math.max(body.scrollHeight, body.offsetHeight, 
     html.clientHeight, html.scrollHeight, html.offsetHeight); 

    var width = Math.max(body.scrollWidth, body.offsetWidth, 
     html.clientWidth, html.scrollWidth, html.offsetWidth); 

    newIframe.style.width = width + "px"; 
    newIframe.style.height = height + "px"; 
} 

Все работает, как ожидается, кроме случаев, когда содержание фрейма меньше, чем ширина = 300 или высота = 150. Когда это так (например, iframe содержит только изображение w: 160 и h: 600), вычисленная ширина неверна.

+0

Что такое начальное значение iframe? (в коде или css) ... и, пожалуйста, добавьте html/css в вопрос. – LGSon

+0

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

+0

@LGSon Я не могу установить начальное значение iframe, так как контент является динамическим. Это может быть 160px, а также 300px ... вы можете попробовать его здесь [ссылка] (http://codepen.io/anon/pen/MaJOqR) –

ответ

0

Установив начальную ширину и высоту iframe на 0, проблема исчезнет, ​​поскольку эти значения будут использоваться как значения по умолчанию.