diff --git a/lib/OpenLayers/Popup.js b/lib/OpenLayers/Popup.js index 99816fe8dc..76df7a4fc6 100644 --- a/lib/OpenLayers/Popup.js +++ b/lib/OpenLayers/Popup.js @@ -506,7 +506,7 @@ OpenLayers.Popup = OpenLayers.Class({ // contents into a fake contentDiv (for the CSS) and then measuring it var preparedHTML = "
" + this.contentDiv.innerHTML + - "
"; + "
"; var containerElement = (this.map) ? this.map.layerContainerDiv : document.body; diff --git a/lib/OpenLayers/Util.js b/lib/OpenLayers/Util.js index d31c1dc6fb..5709773a1a 100644 --- a/lib/OpenLayers/Util.js +++ b/lib/OpenLayers/Util.js @@ -1540,9 +1540,7 @@ OpenLayers.Util.getRenderedDimensions = function(contentHTML, size, options) { // create temp container div with restricted size var container = document.createElement("div"); - container.style.overflow= ""; - container.style.position = "absolute"; - container.style.left = "-9999px"; + container.style.visibility = "hidden"; var containerElement = (options && options.containerElement) ? options.containerElement : document.body; @@ -1567,12 +1565,40 @@ OpenLayers.Util.getRenderedDimensions = function(contentHTML, size, options) { var content = document.createElement("div"); content.innerHTML = contentHTML; + // we need overflow visible when calculating the size + content.style.overflow = "visible"; + if (content.childNodes) { + for (var i=0, l=content.childNodes.length; iContent

"); var bigger = OpenLayers.Util.getRenderedDimensions("

Content

", null, {displayClass: 'testDims'}); + var overflow = OpenLayers.Util.getRenderedDimensions("

Content

"); + var width = OpenLayers.Util.getRenderedDimensions("

Content

", new OpenLayers.Size(250, null)); + var height = OpenLayers.Util.getRenderedDimensions("

Content

", new OpenLayers.Size(null, 40)); if ((size.w + 40) == bigger.w && (size.h + 40) == bigger.h) { - out.innerHTML = "Pass: " + size + ", " + bigger; + out.innerHTML = "bigger Pass: " + size + ", " + bigger; } else { - out.innerHTML = "Fail: " + size + ", " + bigger; + out.innerHTML = "bigger Fail: " + size + ", " + bigger; + } + + if (size.w == overflow.w && size.h == overflow.h) { + out.innerHTML += "
overflow Pass: " + size + ", " + overflow; + } else { + out.innerHTML += "
overflow Fail: " + size + ", " + overflow; + } + + if (width.w == 250 && width.h == size.h) { + out.innerHTML += "
width Pass: " + size + ", " + width; + } + else { + out.innerHTML += "
width Fail: " + size + ", " + width; + } + + if (height.h == 40 && height.w == size.w) { + out.innerHTML += "
height Pass: " + size + ", " + height; + } + else { + out.innerHTML += "
height Fail: " + size + ", " + height; } }