Folgender Quelltext soll mir aus einer geparsten Seite den absoluten Pixelwert des inneren Elementes div#inner ermitteln. Leider erhalte ich bei einer Schachtelung von positionierten und floatenden Elementen wie im Beispiel nicht das gewünschte Ergebnis:
#########################################################
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>IE JS Position und Float</title>
<script type="text/javascript">
function qbepGetAbsoluteXY(fp_oElem) {
var pos = {x:0,y:0};
var Elem = fp_oElem;
if (!Elem || typeof Elem.offsetParent == "undefined") return;
while (Elem && typeof Elem.offsetLeft == "number") {
pos.x += Elem.offsetLeft;
pos.y += Elem.offsetTop;
Elem = Elem.offsetParent;
}
return pos;
}
</script>
<style type="text/css">
body{
margin:0px;
padding:0px;
}
div#null{
position:relative;
border:1px solid #FF00FF;
}
div#outer{
float:left;
width:auto;
border:1px solid #0000FF;
}
div#inner{
position:relative;
border:1px solid #00FFFF;
background:#000000;
color:#FFFFFF;
}
</style>
</head>
<body>
<div id="null">
<div id="outer">
<div id="inner">foo</div>
</div>
</div>
<script type="text/javascript">
var pos = qbepGetAbsoluteXY(document.getElementById('inner'));
alert('x:'+pos.x+' y:'+pos.y);
</script>
</body>
</html>
#################################################
Das Problem tritt nur im IE auf und nur bei bestimmten Verschachtelungen, nehme ich für div#null ODER div#inner, position:static, ist alles wieder im Reinen. Das Problem wird aber vermutlich mit dem Floatelement zusammenhängen, ohne float gibt es auch keine Probleme.
Es geht mir dabei nicht darum, wie der IE etwas darstellt, ob korrekt oder nicht ist mir erst mal egal. Ich versuche nur, im Nachhinein die Position eines Elementes zu ermitteln. So langsam gehen mir die Ideen aus, wie dem beizukommen ist.
Danke, greh