add try/catch hack for IE so that it doesn't choke on offsetParent check. (Closes 798.)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@4061 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2007-08-27 19:33:43 +00:00
parent b133435e06
commit 0a5d7ba0bd

View File

@@ -986,22 +986,38 @@ OpenLayers.Util.pagePosition = function(forElement) {
var valueT = 0, valueL = 0;
var element = forElement;
do {
valueT += element.offsetTop || 0;
valueL += element.offsetLeft || 0;
var child = forElement;
while(element) {
// Safari fix
if (element.offsetParent==document.body)
if (OpenLayers.Element.getStyle(element,'position')=='absolute') break;
if(element == document.body) {
if(OpenLayers.Element.getStyle(child, 'position') == 'absolute') {
break;
}
}
valueT += element.offsetTop || 0;
valueL += element.offsetLeft || 0;
} while (element = element.offsetParent);
child = element;
try {
// wrapping this in a try/catch because IE chokes on the offsetParent
element = element.offsetParent;
} catch(e) {
OpenLayers.Console.error(
"OpenLayers.Util.pagePosition failed: element with id " +
element.id + " may be misplaced."
);
break;
}
}
element = forElement;
do {
valueT -= element.scrollTop || 0;
valueL -= element.scrollLeft || 0;
} while (element = element.parentNode);
while(element) {
valueT -= element.scrollTop || 0;
valueL -= element.scrollLeft || 0;
element = element.parentNode;
}
return [valueL, valueT];
};