From: Michael M Slusarz Date: Fri, 22 Oct 2010 21:18:14 +0000 (-0600) Subject: Bug #9297: Better algorithm to fix HTML IFRAME heights X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=8eb2177ea3b3721a75af4f7a6fcb1bf1d32eb7a9;p=horde.git Bug #9297: Better algorithm to fix HTML IFRAME heights --- 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' }); + } } };