Beat: GetElementCoords für SVG?

Hi.

Ich habe hier aus meinem HTML Framework die folgende Funktion.
Sie ermittelt die Coordinaten eines Elements relativ zum Wurzeldokument.
Ich brauche diese Funktion, um Mouse-Koordinaten relativ zu einem Element berechnen zu können.

  
Element.prototype.getElementCoords=getElementCoords;  
function getElementCoords( el ){  
  if(el === undefined){ el=this }  
               alert(el+';'+el.offsetParent);  
  var coords = { x:0, y:0 };  
  coords.w = el.offsetWidth;  
  coords.h = el.offsetHeight;  
  var i = 0;  
  do {  
    coords.x += el.offsetLeft;  
    coords.y += el.offsetTop;  
    el = el.offsetParent;  
  } while(el);  
  return coords;  
}  

Nun versagt die bei inline SVG innerhalb XHTML5.
el.offsetParent ist nicht definiert.
1.alert SVG RECTELEMENT; undefined
2.alert SVG RECTELEMENT; undefined
fertig

Das DOM sieht so aus
html

  • body
      + section
        + svg
          + g
             + rect (diese Koordinate muss ich haben)

Wie kann ich die Funktion HTML+SVG Kompatibel machen?

mfg Beat

--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische
  1. offsetParent ist unbekannt für SVG
    Meine Lösung muss in diese Richtung gehen:
    http://www.w3.org/TR/SVG/types.html#__svg__SVGLocatable__getCTM

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  2. Hallo,

    Allgemein ist die offsetParent-Methode zum Berechnen des Viewport-Offsets eines Elements veraltet. Dafür gibt es getBoundingClientRect. Auch SVG-Elemente haben diese Methode in meinen Tests.

    Mathias

    1. Allgemein ist die offsetParent-Methode zum Berechnen des Viewport-Offsets eines Elements veraltet. Dafür gibt es getBoundingClientRect. Auch SVG-Elemente haben diese Methode in meinen Tests.

      Danke für den Hinweis. Ich werde das wohl später verarbeiten. (Meine Nerven sind nicht 100% bei der Sache)

      mfg Beat

      --
      ><o(((°>           ><o(((°>
         <°)))o><                     ><o(((°>o
      Der Valigator leibt diese Fische