2017-01-05 1 views
2

Ich benutze offset() von jQuery, um die Position eines Pfadelements in einem resized svg Element zurückzugeben. Dies funktioniert in allen Browsern mit Ausnahme von Safari, die den Versatz, der mit dem unskalierten SVG verbunden ist, zurückgeben. Ich habe versucht, getBBox zu verwenden, aber die Werte sind falsch.SVG Pfadposition in Safari falsch

$('body').append('<div style="position:absolute">Pos:'+ $('#path4108').offset()+'</div>'); 

Irgendwelche Ideen, wie ich die richtige Position abrufen kann?

Example Fiddle

+0

Sie vermeiden sollten jQuery mit SVG-Elemente zu arbeiten. jQuery ist nur für die Arbeit mit HTML-Elementen vorgesehen und unterstützt mit wenigen Ausnahmen keine SVG-Elemente. –

Antwort

0

Schräge. Scheint ein Bug mit jQuery zu sein, da die native Javascript Funktion .getBoundingClientRect(); funktioniert.

$('body').append('<div class="position">Top:'+ 
$('#path4108')[0].getBoundingClientRect().top+ '<br> Left:'+ $('#path4108')[0].getBoundingClientRect().left+ '</div>'); 

https://jsfiddle.net/j7q2j6Le/3/

+0

Wahrscheinlicher ist ein Fehler in Safari, da AFAICS [jQuery.fn.offset] (https://github.com/jquery/jquery/blob/bf3a43eff8682b59cec785be6003753fa4b93706/src/offset.js#L70) für Safari nichts Spezielles tut. –

Verwandte Themen