void: absolute Elementposition im IE (7.0) auslesen?

hallo!

habe ein "seltsames" phänomen: wenn ich unter IE 7.0 die absolute position eines elementes (absolut im dokument gesehen) abrufe, funktioniert dies nur korrekt im quirksmode - kann das sein?
ich benötige die x/y-koordinaten aber auch im standardkonformen modus!
gibt es da eine logische lösung/erklärung? denn wenn die position durch den modus auch tatsächlich (angezeigt) anders wäre, hätte ich ja kein problem damit ;-) - nur: die anzeige des dokumentes bleibt gleich und die koordinaten ändern sich...

danke im voraus!

mfg, void

  1. hat keiner eine ahnung? bzw. tipps würden mir ja ev. auch schon weiterhelfen =)

    bitte!!

    1. hat keiner eine ahnung? bzw. tipps würden mir ja ev. auch schon weiterhelfen =)

      Naja, ohne zu Wissen was du genau machst läßt sich dazu nichts sagen.

      Struppi.

      --
      Javascript ist toll (Perl auch!)
      1. was ich bereits mache, ist eigentlich nicht wesentlich - wenn es eine lösung ohne besagten fehler gibt, bin ich happy... ich habe meinen lösungsansatz bewusst nicht gepostet, damit ich keine richtung vorgebe ;-) .

        also: ich will mithilfe JS unter IE 7.0 die absolute Elementposition auslesen, sowohl im Quirksmode, als auch im Standard konformen Modus - nun seid ihr an der reihe, mir zu sagen wie... (wäre zumindest toll)

        mfg

        1. also: ich will mithilfe JS unter IE 7.0 die absolute Elementposition auslesen, sowohl im Quirksmode, als auch im Standard konformen Modus - nun seid ihr an der reihe, mir zu sagen wie... (wäre zumindest toll)

          Mit offsetTop/Left kannst du die Postion ermitteln, gegebenenfalls noch die von offsetParent dazu addieren.

          Struppi.

          --
          Javascript ist toll (Perl auch!)
          1. Mit offsetTop/Left kannst du die Postion ermitteln, gegebenenfalls noch die von offsetParent dazu addieren.

            danke, genau diesen weg habe ich bereits probiert, funktioniert tadellos nur im quirksmode...

            1. Mit offsetTop/Left kannst du die Postion ermitteln, gegebenenfalls noch die von offsetParent dazu addieren.
              danke, genau diesen weg habe ich bereits probiert, funktioniert tadellos nur im quirksmode...

              auch im Standardmode.

              Struppi.

              --
              Javascript ist toll (Perl auch!)
              1. Hallo Struppi,

                auch im Standardmode.

                aber wohl mit offsetParent.offsetLeft statt offsetLeft, oder vielleicht
                mitels Addition beider Werte, wenn je nach Rendermodus ein Wert 0 beträgt:

                  
                document.getElementById('test').offsetParent.offsetLeft+document.getElementById('test').offsetLeft;
                

                Grüsse
                Cyx23

                1. auch im Standardmode.

                  aber wohl mit offsetParent.offsetLeft statt offsetLeft, oder vielleicht
                  mitels Addition beider Werte, wenn je nach Rendermodus ein Wert 0 beträgt:

                  Hab ich das nicht geschrieben?

                  Struppi.

                  --
                  Javascript ist toll (Perl auch!)
                  1. Hallo Struppi,

                    Hab ich das nicht geschrieben?

                    doch, stimmt schon, sorry. Ist mir aber, auch durch die Nachfrage von
                    "void", erstmal nicht hinreichend entgegengesprungen bzw. war mir dann
                    als Hinweis ohne Beispielcode auch etwas dezent, selbst wenn es das
                    SELF-Forum ist :)

                    Ausserdem -was bei meiner Ausführung m.E. deutlicher wurde- käme statt
                    einer Addition ein 'oder' in Frage:

                      
                    document.getElementById('tie').offsetLeft|document.getElementById('tie').offsetParent.offsetLeft;  
                    
                    

                    Grüsse
                    Cyx23

                    1. Ausserdem -was bei meiner Ausführung m.E. deutlicher wurde- käme statt
                      einer Addition ein 'oder' in Frage:

                      oder so:

                        
                      function getPos (o)  
                      {  
                          var r = { top:0, left:0 };  
                          if(!o) return r;  
                          else if(typeof o == 'string' ) o = document.getElementById(o);  
                          if( typeof o != 'object' ) return r;  
                          if(typeof o.offsetTop != 'undefined')  
                          {  
                               r.left = r.top = 0;  
                               while (o && o.tagName != 'BODY')  
                               {  
                                    r.top  += parseInt( o.offsetTop );  
                                    r.left += parseInt( o.offsetLeft );  
                                    o = o.offsetParent;  
                               }  
                          }  
                          return r;  
                      }  
                      
                      

                      Struppi.

                      --
                      Javascript ist toll (Perl auch!)
                      1. danke für das beispiel, der effekt ist aber mein besagter (vielleicht liegt der hund ja ganz wo anders begraben?!):

                        <?xml version="1.0" encoding="iso-8859-1"?>
                        <!DOCTYPE html
                             PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                        <HTML>
                        <head>
                        <script>
                        function getPos (o)
                        {
                            var r = { top:0, left:0 };
                            if(!o) return r;
                            else if(typeof o == 'string' ) o = document.getElementById(o);
                            if( typeof o != 'object' ) return r;
                            if(typeof o.offsetTop != 'undefined')
                            {
                                 r.left = r.top = 0;
                                 while (o && o.tagName != 'BODY')
                                 {
                                      r.top  += parseInt( o.offsetTop );
                                      r.left += parseInt( o.offsetLeft );
                                      o = o.offsetParent;
                                 }
                            }
                            return r;
                        }

                        function alertCoo(el)
                        {
                            var coords = getPos(document.links[el]);
                            if (coords) alert(coords.left + ':' + coords.top);
                        }
                        </script>
                        </head>
                            <BODY id="documentBody" onload="alertCoo(1)">

                        <DIV id="div1">
                                    <A id="a1" href="#">Placeholder text 1.</A>
                                </DIV>

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

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

                        </BODY>
                        </HTML>

                        bei diesem beispiel einfach mal die xml-zeile und doctype weglassen, und siehe da: andere werte!?!?!

                        1. danke für das beispiel, der effekt ist aber mein besagter (vielleicht liegt der hund ja ganz wo anders begraben?!):

                          Wie ich dir schon ganz am Anfang gesagt habe, ohne zu Wissen was du machst...

                          <?xml version="1.0" encoding="iso-8859-1"?>

                          Die ist bekannt, dass du damit den IE in den Quirksmodus setzt.

                          ...

                          bei diesem beispiel einfach mal die xml-zeile und doctype weglassen, und siehe da: andere werte!?!?!

                          Mit xml = Quirksmodus = Boxmodel Bug.

                          Struppi.

                          --
                          Javascript ist toll (Perl auch!)
                          1. <?xml version="1.0" encoding="iso-8859-1"?>

                            Die ist bekannt, dass du damit den IE in den Quirksmodus setzt.

                            Mit xml = Quirksmodus = Boxmodel Bug.

                            funktioniert auch mit
                            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                                    "http://www.w3.org/TR/html4/strict.dtd">
                            oder
                            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                                    "http://www.w3.org/TR/html4/loose.dtd">
                            nicht...

                            1. <?xml version="1.0" encoding="iso-8859-1"?>

                              Die ist bekannt, dass du damit den IE in den Quirksmodus setzt.

                              Mit xml = Quirksmodus = Boxmodel Bug.
                              funktioniert auch mit
                              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                                      "http://www.w3.org/TR/html4/strict.dtd">
                              oder
                              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                                      "http://www.w3.org/TR/html4/loose.dtd">
                              nicht...

                              Die Zeile meinte ich nicht, ich meinte die xml Deklaration, die wirk so, als ob du gar keinen DOCTYPE angibst.

                              Ich kann dir aber noch sagen, dass es sehr schwer ist relativ positionierte Elemente in allen Browsern, in allen Modi, richtig mit JS zu positionieren oder die Position auszulesen. Ich hab mich da auch mal dran versucht und irgendwann aufgegeben, da irgendein Browser immer irgendwie anders reagiert hatte. Mit absolut positionierten Elementen ist das alles kein Problem.

                              Struppi.

                              --
                              Javascript ist toll (Perl auch!)
                              1. Ich kann dir aber noch sagen, dass es sehr schwer ist relativ positionierte Elemente in allen Browsern, in allen Modi, richtig mit JS zu positionieren oder die Position auszulesen. Ich hab mich da auch mal dran versucht und irgendwann aufgegeben, da irgendein Browser immer irgendwie anders reagiert hatte. Mit absolut positionierten Elementen ist das alles kein Problem.

                                Struppi.

                                na ja, momentan (für das jetzige projekt) benötige ich es ausnahmsweise nur für den IE korrekt. des weiteren verfüge ich NICHT über den quelltext in dem sinne, dass ich ihn beliebig designen kann, was das positionieren von elementen angeht, da ich eine art "proxy" bastel, welche nur die positionen der elemente auslesen muss...

                                danke jedenfalls =)

                              2. <?xml version="1.0" encoding="iso-8859-1"?>

                                Die ist bekannt, dass du damit den IE in den Quirksmodus setzt.

                                Mit xml = Quirksmodus = Boxmodel Bug.
                                funktioniert auch mit
                                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                                        "http://www.w3.org/TR/html4/strict.dtd">
                                oder
                                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                                        "http://www.w3.org/TR/html4/loose.dtd">
                                nicht...

                                Die Zeile meinte ich nicht, ich meinte die xml Deklaration, die wirk so, als ob du gar keinen DOCTYPE angibst.

                                scheint aber beim IE 7.0 nicht mehr so zu sein, da IE7.0 ja ein "Standard konformer Browser" sein will ;-)

                                zum testen:
                                <?xml version="1.0" encoding="iso-8859-1"?>
                                <!DOCTYPE html
                                     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                                     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                                <html>
                                <head>
                                <title>test</title>
                                <script type="text/javascript">

                                function alertInfo()
                                {
                                 var msg="";
                                 if(document.compatMode!="CSS1Compat") msg += "Quirksmodus\n";
                                 else msg += "Standardkonformer Modus\n";

                                alert(msg);
                                }
                                </script>
                                </head>
                                    <body id="documentBody" onload="alertInfo()">

                                <div id="div1">
                                            <a id="a1" href="#">Placeholder text 1.</a>
                                        </div>

                                </body>
                                </html

                                1. Die Zeile meinte ich nicht, ich meinte die xml Deklaration, die wirk so, als ob du gar keinen DOCTYPE angibst.
                                  scheint aber beim IE 7.0 nicht mehr so zu sein, da IE7.0 ja ein "Standard konformer Browser" sein will ;-)

                                  Ich bin kein IE Experte (und hatte auch den Code mit dem IE 6 ausprobiert) aber das scheint zu stimmen.

                                  Struppi.

                                  --
                                  Javascript ist toll (Perl auch!)
                        2. hi,

                          <BODY id="documentBody" onload="alertCoo(1)">
                                  <DIV id="div1">

                          Es gibt in XHTML keine Elemente namens BODY und DIV.

                          http://de.selfhtml.org/html/xhtml/unterschiede.htm#kleinschreibung

                          gruß,
                          wahsaga

                          --
                          /voodoo.css:
                          #GeorgeWBush { position:absolute; bottom:-6ft; }
                          1. Es gibt in XHTML keine Elemente namens BODY und DIV.

                            http://de.selfhtml.org/html/xhtml/unterschiede.htm#kleinschreibung

                            gruß,
                            wahsaga

                            sorry, natürlich mein fehler - macht aber in diesem fall keinen unterschied...

                            mfg

                      2. so gehört es ausgebessert:

                        function getPos (o)
                        {
                            var r = { top:0, left:0 };
                            if(!o) return r;
                            else if(typeof o == 'string' ) o = document.getElementById(o);
                            if( typeof o != 'object' ) return r;
                            if(typeof o.offsetTop != 'undefined')
                            {
                                 r.left = r.top = 0;
                                 while (o && o.tagName != 'BODY')
                                 {
                        // sonst werden die Offsets doppelt gezählt...
                          if(o.currentStyle.position!='relative')
                          {
                                       r.top  += parseInt( o.offsetTop );
                                       r.left += parseInt( o.offsetLeft );
                          }
                                      o = o.offsetParent;
                                 }
                            }
                            return r;
                        }

                        1. das ist die lösung!?! sry, habe mich bei vorigem post ein wenig geirrt:

                          function getPos (o)
                          {
                              var r = { top:0, left:0 };
                              if(!o) return r;
                              else if(typeof o == 'string' ) o = document.getElementById(o);
                              if( typeof o != 'object' ) return r;
                              if(typeof o.offsetTop != 'undefined')
                              {
                                   r.left = r.top = 0;
                                   while (o)
                                   {
                            if(o.offsetParent)
                            {
                             if(o.offsetParent.currentStyle.position!='relative')
                             {
                                          r.top  += parseInt( o.offsetTop );
                                          r.left += parseInt( o.offsetLeft );
                             }
                            }
                            else
                            {
                                         r.top  += parseInt( o.offsetTop );
                                         r.left += parseInt( o.offsetLeft );
                            }

                          o = o.offsetParent;
                                   }
                              }
                              return r;
                          }

                          dieser code funktioniert bei meinem bespiel in allen modi korrekt...

          2. also: im quirksmodus ist der abstand (offset) des bodys 0, im standardkonformen modus aber 15?!?! warum zum geier?

            1. also: im quirksmodus ist der abstand (offset) des bodys 0, im standardkonformen modus aber 15?!?! warum zum geier?

              Bei mir nicht
              Wie hast festgestellt, dass du a. in welchen Modus bist und b. body dass du den offsetWert des Body hast?

              Struppi.

              --
              Javascript ist toll (Perl auch!)
              1. Wie hast festgestellt, dass du a. in welchen Modus bist und b. body dass du den offsetWert des Body hast?

                var msg="";
                 if(document.compatMode!="CSS1Compat") msg += "Quirksmodus\n";
                 else msg += "Standardkonformer Modus\n";

                msg += "\nbody Offset: " + document.body.offsetLeft + '/' + document.body.offsetTop + "\n";

                alert(msg);

                mfg

                1. Wie hast festgestellt, dass du a. in welchen Modus bist und b. body dass du den offsetWert des Body hast?
                  var msg="";
                  if(document.compatMode!="CSS1Compat") msg += "Quirksmodus\n";
                  else msg += "Standardkonformer Modus\n";

                  msg += "\nbody Offset: " + document.body.offsetLeft + '/' + document.body.offsetTop + "\n";

                  alert(msg);

                  Noch ein Fehler, im Standardmode ist es nicht document.body was du du im IE auslesen musst, sondern window.document.documentElement

                  Wie ich schon ganz ganz am anfang sagte, es ist müßig über Probleme zu diskutieren, wenn wir nicht Wissen was du machst. Es taucht jetzt eine Sache nach der anderen auf, die für deine Fragestellung eine entscheidende Rolle spielt, die du aber nur nach und nach rausrückst. Es wäre für die ganze sache sinnvoll, eine Beispielseite zu bauen, anhand der man sieht wo die Probleme sind.

                  Struppi.

                  --
                  Javascript ist toll (Perl auch!)
                  1. Noch ein Fehler, im Standardmode ist es nicht document.body was du du im IE auslesen musst, sondern window.document.documentElement

                    ?? ich weiß nicht genau was du damit meinst? was muss ich anstatt document.body.offsetLeft auslesen?

                    Wie ich schon ganz ganz am anfang sagte, es ist müßig über Probleme zu diskutieren, wenn wir nicht Wissen was du machst. Es taucht jetzt eine Sache nach der anderen auf, die für deine Fragestellung eine entscheidende Rolle spielt, die du aber nur nach und nach rausrückst. Es wäre für die ganze sache sinnvoll, eine Beispielseite zu bauen, anhand der man sieht wo die Probleme sind.

                    welche rel. dinge sind bis jetzt im nachhinein aufgetaucht?
                    ich stelle die frage gerne anders noch einmal:
                    Voraussetzungen: Internet Explorer 7.0 mit aktiviertem Javascript

                    Browse auf eine beliebige Seite. Nun gebe <gesuchten Code> in der Adresszeile ein (z.B. javascript:alert(document.getElementById('gesuchteID').offsetLeft); ).
                    <gesuchter Code>: die angezeigte Position eines beliebigen Elementes (Link, Image,...), welche mit der angezeigten Position am Bildschirm übereinstimmt (0/0 = linke obere Ecke des Dokumentfensters).

                    hoffe, dass diese frage klarer ist?

                    p.s.: @beispielseite: man kann jede beliebige seite nehmen, aber ich teste im moment alles mit

                    <?xml version="1.0" encoding="iso-8859-1"?>  
                    <!DOCTYPE html  
                         PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
                         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
                    <html>  
                    <head>  
                    <title>test</title>  
                    <script type="text/javascript">
                    ~~~~~~javascript
                      
                    function getPos (o)  
                    {  
                        var r = { top:0, left:0 };  
                        if(!o) return r;  
                        else if(typeof o == 'string' ) o = document.getElementById(o);  
                        if( typeof o != 'object' ) return r;  
                        if(typeof o.offsetTop != 'undefined')  
                        {  
                             r.left = r.top = 0;  
                             while (o)  
                             {  
                      if(o.offsetParent)  
                      {  
                       if(o.offsetParent.currentStyle.position!='relative')  
                       {  
                                    r.top  += parseInt( o.offsetTop );  
                                    r.left += parseInt( o.offsetLeft );  
                       }  
                      }  
                      else  
                      {  
                                   r.top  += parseInt( o.offsetTop );  
                                   r.left += parseInt( o.offsetLeft );  
                      }  
                      
                                  o = o.offsetParent;  
                             }  
                        }  
                        return r;  
                    }  
                      
                    function alertInfo()  
                    {  
                     var msg="";  
                     if(document.compatMode!="CSS1Compat") msg += "Quirksmodus\n";  
                     else msg += "Standardkonformer Modus\n";  
                      
                     msg += "\nbody Offset: " + document.body.offsetLeft + '/' + document.body.offsetTop + "\n";  
                      
                        var coords = getPos(document.links[1]);  
                        if (coords)  
                          msg += "\nKoordinaten des 2.Links: " + coords.left + '/' + coords.top + "\n";  
                      
                     alert(msg);  
                    }
                    ~~~~~~html
                      
                    </script>  
                    </head>  
                        <body id="documentBody" onload="alertInfo()">  
                      
                            <div id="div1">  
                                <a id="a1" href="#">Placeholder text 1.</a>  
                            </div>  
                      
                            <div id="div2" style="position:relative;top:100px;left:100px;">  
                                <a id="a2" href="#">Placeholder text 2.</a>  
                            </div>  
                      
                            <div id="div3" style="position:absolute;top:200px;left:200px;">  
                                <div id="div4" style="position:relative;top:100px;left:100px;">  
                                    <a id="a3" href="#">Placeholder text 3.</a>  
                                </div>  
                            </div>  
                      
                        </body>  
                    </html>  
                    
                    ~~~ (mit W3C-Validator validiert)
                    
                    1. Noch ein Fehler, im Standardmode ist es nicht document.body was du du im IE auslesen musst, sondern window.document.documentElement
                      ?? ich weiß nicht genau was du damit meinst? was muss ich anstatt document.body.offsetLeft auslesen?

                      window.document.documentElement.offsetLeft

                      welche rel. dinge sind bis jetzt im nachhinein aufgetaucht?

                      * relative Positionierung
                      * xml Prolog (zumindest für den IE 6 relevant)
                      * document.body statt window.document.documentElement

                      ich stelle die frage gerne anders noch einmal:
                      Voraussetzungen: Internet Explorer 7.0 mit aktiviertem Javascript

                      ich schau mir das mal an.

                      Struppi.

                      --
                      Javascript ist toll (Perl auch!)
                      1. ich stelle die frage gerne anders noch einmal:
                        Voraussetzungen: Internet Explorer 7.0 mit aktiviertem Javascript

                        ich schau mir das mal an.

                        Also, ich hab einige Merkwürdigkeiten im IE festgestellt.

                        einmal gibt es bei allen positionierten Links kein offsetParent BODY stattdessen läuft die Schleife bis zum HTML Element (unter Auslassung von BODY) - keine Ahnung welche Konsequenz das hat, da body ja im IE einen offset hat (im firefox nicht).

                        Dann bekommt im IE das Element in relativ positionierten Elementen ein offset und zwar so hoch wie das relativ positionierte Element positioniert ist.

                        Alles realtiv seltsam, ich hab hier mal die Testseite hochgeladen, dann schau ich mir das später nochmal mit dem IE 6 und OP an.
                        http://javascript.jstruebig.de/test/positionsproblem.html

                        Struppi.

                        --
                        Javascript ist toll (Perl auch!)
                        1. ich habe jetzt auch eine "testseite" geschrieben, das grundgerüst funktioniert (ob jetzt korrekt implementiert, oder nicht)...

                          aufgrund von zugriffsrechten kann man natürlich nur seiten der selben domain verwenden. speichert man aber jetzt verscheidene seiten z.b. lokal ab und lädt diese in meinem frameset, funktioniert es sehr gut, soll heißen etwa 90% der links werden korrekt umrandet, der rest leider nicht -> seltsam!?!?

                          frameset-datei:

                          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"  
                             "http://www.w3.org/TR/html4/frameset.dtd">  
                          <html>  
                          <head>  
                          <title>test</title>  
                          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
                          </head>  
                          <frameset rows="100,*">  
                            <frame src="javascript.html">  
                            <frame src="about:blank" name="browserwindow">  
                          </frameset>  
                          </html>  
                          
                          

                          und frame-datei (javascript.html):

                          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
                                 "http://www.w3.org/TR/html4/loose.dtd">  
                          <html>  
                          <head>  
                          <title>test</title>  
                          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
                          <script type="text/javascript">
                          ~~~~~~javascript
                            
                          function browseto()  
                          {  
                           parent.browserwindow.location=document.all.url.value;  
                          }  
                            
                          function mark_links()  
                          {  
                           var anz;  
                           anz=parent.browserwindow.document.links.length  
                            
                           for(var i=0;i<anz;++i)  
                           {  
                            var pos;  
                            pos=getPos(parent.browserwindow.document.links[i]);  
                            parent.browserwindow.document.body.insertAdjacentHTML("AfterBegin", '<span id="marker' + i + '" style="position:absolute;border:1px solid red" />');  
                            parent.browserwindow.document.getElementById('marker' + i).style.left=pos.left  
                            parent.browserwindow.document.getElementById('marker' + i).style.top=pos.top  
                            parent.browserwindow.document.getElementById('marker' + i).style.width=parent.browserwindow.document.links[i].offsetWidth  
                            parent.browserwindow.document.getElementById('marker' + i).style.height=parent.browserwindow.document.links[i].offsetHeight  
                           }  
                          }  
                            
                          function getPos (o)  
                          {  
                           var r = { top:0, left:0 };  
                           if(!o) return r;  
                           else if(typeof o == 'string' ) o = document.getElementById(o);  
                           if( typeof o != 'object' ) return r;  
                           if(typeof o.offsetTop != 'undefined')  
                           {  
                            r.left = r.top = 0;  
                            while (o)  
                            {  
                             if(o.offsetParent)  
                             {  
                              if(o.offsetParent.currentStyle.position!='relative')  
                              {  
                               r.top  += parseInt( o.offsetTop );  
                               r.left += parseInt( o.offsetLeft );  
                              }  
                             }  
                             else  
                             {  
                              r.top  += parseInt( o.offsetTop );  
                              r.left += parseInt( o.offsetLeft );  
                             }  
                            
                             o = o.offsetParent;  
                            }  
                           }  
                           return r;  
                          }
                          ~~~~~~html
                            
                          </script>  
                          </head>  
                          <body>  
                           <div><form action=""><label for="url">URL:</label> <input id="url" size="100" /> <input type="button" value="Browse" onclick="browseto()" /></form></div>  
                           <div><form action=""><input type="button" value="mark all links" onclick="mark_links()" /></form></div>  
                          </body>  
                          </html>  
                          
                          
                      2. welche rel. dinge sind bis jetzt im nachhinein aufgetaucht?

                        * relative Positionierung
                        * xml Prolog (zumindest für den IE 6 relevant)

                        wie gesagt: ich kann nicht beeinflussen, welches dokument wie daherkommt...

                        * document.body statt window.document.documentElement

                        das war ja nur mein lösungsversuch, bin offen für alles funktionierende!

                        ich schau mir das mal an.

                        danke =)

        2. Hallo,

          also: ich will mithilfe JS unter IE 7.0 die absolute Elementposition auslesen, sowohl im Quirksmode, als auch im Standard konformen Modus

          vielleicht ist getComputedStyle noch interessant für dich.

          Grüsse
          Cyx23

          1. vielleicht ist getComputedStyle noch interessant für dich.

            danke, leider läuft alles auf mein phänomen hinaus... (unterschiedliche angaben standard/quirks)

            1. Hallo,

              danke, leider läuft alles auf mein phänomen hinaus... (unterschiedliche angaben standard/quirks)

              was ja doch per "offsetParent" (wie in den anderen Postings im Thread
              ausgeführt) lösbar ist.

              Grüsse
              Cyx23

              1. was ja doch per "offsetParent" (wie in den anderen Postings im Thread
                ausgeführt) lösbar ist.

                hallo!
                wie genau? durch das zusammenaddieren der offsets des objektes selbst und dessen eltern? habe ich leider auch keine einheitlichen ergebnisse erhalten...

                1. Hallo,

                  was ja doch per "offsetParent" (wie in den anderen Postings im Thread
                  ausgeführt) lösbar ist.
                  hallo!
                  wie genau? durch das zusammenaddieren der offsets des objektes selbst und dessen eltern? habe ich leider auch keine einheitlichen ergebnisse erhalten...

                  M.E erstmal richtiger: _entweder_ das des Objekts _oder_ das des
                  betr. parent (IE-DOM).

                  Eventuelle Unterschiede wenns denn welche gibt mögen dann ein weiteres
                  Problem sein, womöglich nur Unterschiede a la box-bug?

                    
                  window.onload=function(){  
                  x=document.getElementById('test');  
                  x.innerHTML=x.offsetLeft|x.offsetParent.offsetLeft;  
                  }  
                  
                  
                    
                  </script>  
                  <div style="float:left;">____</div>  
                  <div id="test">Test</div>  
                  
                  

                  Grüsse
                  Cyx23

        3. hi,

          was ich bereits mache, ist eigentlich nicht wesentlich - wenn es eine lösung ohne besagten fehler gibt, bin ich happy... ich habe meinen lösungsansatz bewusst nicht gepostet, damit ich keine richtung vorgebe ;-) .

          D'oh!

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }