Author: hsaputra Date: Wed Aug 17 21:35:52 2011 New Revision: 1158921 URL: http://svn.apache.org/viewvc?rev=1158921&view=rev Log: SHINDIG-1583 | Remove duplicate code in features/src/main/javascript/features/dynamic-height.height/dynamic-height-height.js | Patch from Dan Dumont
CR at : https://reviews.apache.org/r/1577 Modified: shindig/trunk/features/src/main/javascript/features/dynamic-height.height/dynamic-height-height.js Modified: shindig/trunk/features/src/main/javascript/features/dynamic-height.height/dynamic-height-height.js URL: http://svn.apache.org/viewvc/shindig/trunk/features/src/main/javascript/features/dynamic-height.height/dynamic-height-height.js?rev=1158921&r1=1158920&r2=1158921&view=diff ============================================================================== --- shindig/trunk/features/src/main/javascript/features/dynamic-height.height/dynamic-height-height.js (original) +++ shindig/trunk/features/src/main/javascript/features/dynamic-height.height/dynamic-height-height.js Wed Aug 17 21:35:52 2011 @@ -182,89 +182,4 @@ gadgets.window = gadgets.window || {}; } } }; - - /** - * Parse out the value (specified in px) for a CSS attribute of an element. - * - * @param {Element} elem the element with the attribute to look for. - * @param {string} attr the CSS attribute name of interest. - * @return {number} the value of the px attr of the elem. - * @private - */ - function parseIntFromElemPxAttribute(elem, attr) { - var style = window.getComputedStyle(elem, ''); - var value = style.getPropertyValue(attr); - value.match(/^([0-9]+)/); - return parseInt(RegExp.$1, 10); - } - - /** - * For Webkit-based browsers, calculate the height of the gadget iframe by - * iterating through all elements in the gadget, starting with the body tag. - * It is not sufficient to only account body children elements, because - * CSS style position "float" may place a child element outside of the - * containing parent element. Not counting "float" elements may lead to - * undercounting. - * - * @return {number} the height of the gadget. - * @private - */ - function getHeightForWebkit() { - var result = 0; - var queue = [document.body]; - - while (queue.length > 0) { - var elem = queue.shift(); - var children = elem.childNodes; - - /* - * Here, we are checking if we are a container that clips its overflow wit h - * a specific height, because if so, we should ignore children - */ - - // check that elem is actually an element, could be a text node otherwise - if (typeof elem.style !== 'undefined') { - // Get the overflowY value, looking in the computed style if necessary - var overflowY = elem.style['overflowY']; - if (!overflowY) { - var css = document.defaultView.getComputedStyle(elem, null); - overflowY = css ? css['overflowY'] : null; - } - - // The only non-clipping values of overflow is 'visible'. We assume that 'inherit' - // is also non-clipping at the moment, but should we check this? - if (overflowY != 'visible' && overflowY != 'inherit') { - // Make sure this element explicitly specifies a height - var height = elem.style['height']; - if (!height) { - var css = document.defaultView.getComputedStyle(elem, null); - height = css ? css['height'] : ''; - } - if (height.length > 0 && height != 'auto') { - // We can safely ignore the children of this element, - // so move onto the next in the queue - continue; - } - } - } - - for (var i = 0; i < children.length; i++) { - var child = children[i]; - if (typeof child.offsetTop !== 'undefined' && - typeof child.offsetHeight !== 'undefined') { - // offsetHeight already accounts for border-bottom, padding-bottom. - var bottom = child.offsetTop + child.offsetHeight + - parseIntFromElemPxAttribute(child, 'margin-bottom'); - result = Math.max(result, bottom); - } - queue.push(child); - } - } - - // Add border, padding and margin of the containing body. - return result + - parseIntFromElemPxAttribute(document.body, 'border-bottom') + - parseIntFromElemPxAttribute(document.body, 'margin-bottom') + - parseIntFromElemPxAttribute(document.body, 'padding-bottom'); - } }());
