From 8eb2177ea3b3721a75af4f7a6fcb1bf1d32eb7a9 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Fri, 22 Oct 2010 15:18:14 -0600 Subject: [PATCH] Bug #9297: Better algorithm to fix HTML IFRAME heights --- imp/js/imp.js | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/imp/js/imp.js b/imp/js/imp.js index d6eb6d833..5559d50c8 100644 --- a/imp/js/imp.js +++ b/imp/js/imp.js @@ -90,25 +90,19 @@ document.observe('dom:loaded', function() { IMP.iframeResize = function(id) { - var val, - i = 0; + var lc, val; if (id = $(id)) { - val = Math.max(id.contentWindow.document.body.scrollHeight, id.contentWindow.document.lastChild.scrollHeight); + lc = id.contentWindow.document.lastChild; + val = Math.max(id.contentWindow.document.body.scrollHeight, lc.scrollHeight); id.setStyle({ height: val + 'px' }); // For whatever reason, browsers will report different heights - // after the initial height setting. Try expanding IFRAME up to - // 5 times in 20px increments. If still scrolling, give up to - // prevent infinite loops (and giant IFRAMES). - do { - if (id.contentWindow.document.body.scrollHeight == id.contentWindow.document.lastChild.scrollHeight) { - break; - } - - val += 20; - id.setStyle({ height: val + 'px' }); - } while (++i <= 5); + // after the initial height setting. + // Try expanding IFRAME if we detect a scroll. + if (lc.clientHeight != lc.scrollHeight) { + id.setStyle({ height: (val + 25) + 'px' }); + } } }; -- 2.11.0