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:
+27
-11
@@ -986,21 +986,37 @@ OpenLayers.Util.pagePosition = function(forElement) {
|
|||||||
var valueT = 0, valueL = 0;
|
var valueT = 0, valueL = 0;
|
||||||
|
|
||||||
var element = forElement;
|
var element = forElement;
|
||||||
do {
|
var child = forElement;
|
||||||
valueT += element.offsetTop || 0;
|
while(element) {
|
||||||
valueL += element.offsetLeft || 0;
|
|
||||||
|
|
||||||
// Safari fix
|
if(element == document.body) {
|
||||||
if (element.offsetParent==document.body)
|
if(OpenLayers.Element.getStyle(child, 'position') == 'absolute') {
|
||||||
if (OpenLayers.Element.getStyle(element,'position')=='absolute') break;
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} while (element = element.offsetParent);
|
valueT += element.offsetTop || 0;
|
||||||
|
valueL += element.offsetLeft || 0;
|
||||||
|
|
||||||
|
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;
|
element = forElement;
|
||||||
do {
|
while(element) {
|
||||||
valueT -= element.scrollTop || 0;
|
valueT -= element.scrollTop || 0;
|
||||||
valueL -= element.scrollLeft || 0;
|
valueL -= element.scrollLeft || 0;
|
||||||
} while (element = element.parentNode);
|
element = element.parentNode;
|
||||||
|
}
|
||||||
|
|
||||||
return [valueL, valueT];
|
return [valueL, valueT];
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user