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:
@@ -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];
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user