Einzelnen Beitrag anzeigen
Alt 04.01.2007, 19:38   #2
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Idee lösung

hehe, war ich mit der lösung schneller, als die 1.antwort

man muss einfach abfragen, ob es die currentStyle eigenschaft gibt... damit kann man relative und demnach doppelte angaben ausschließen, das ganze sieht dann so aus:
Code:
<HTML>
<head>
<script>
   function getPageCoords (elementId) {
     var element;
     if (document.all)
       element = document.all[elementId];
     else if (document.getElementById)
       element = document.getElementById(elementId);
     if (element) {
       var coords = {x: 0, y: 0};
       do {
		if(element.currentStyle)
		{
			if(element.currentStyle.position!='relative')
			{
				coords.x += element.offsetLeft;
				coords.y += element.offsetTop;
			}
		}
		else
		{
			coords.x += element.offsetLeft;
			coords.y += element.offsetTop;
		}

         element = element.offsetParent;
       }
       while (element)
       return coords;
     }
     else
       return null;
    } 

function alertCoo(el)
{
    var coords = getPageCoords(el);
    if (coords)
      alert(coords.x + ':' + coords.y); 
}
</script>
</head>
    <BODY id="documentBody" onload="alertCoo('a3')">

        <DIV id="div1">
            Placeholder text 1.
        </DIV>

        <DIV id="div2" style="position:relative;top:100px;left:100px;">
            Placeholder text 2.
        </DIV>

        <DIV id="div3" style="position:absolute;top:200px;left:200px;">
            <DIV id="div4" style="position:relative;top:100px;left:100px;">
                Placeholder text 3.
            </DIV>
        </DIV>

    </BODY>
</HTML>
funktioniert jetzt so im IE und FF!

p.s.: ich habe das ganze jetzt für meine zwecke getestet, sollte irgendjemand drauf kommen, dass es so nicht (immer) funktioniert, bitte nicht steinigen, sondern einfach schreiben, am besten gleich mit lösung

eigentlich hasse ich solche sachen, die für verschiedene browser geschrieben sind und nicht nach standards funktionieren...
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten