2012-03-30 8 views
26

Ich habe einen svg: text-Knoten, und ich möchte HTML-Code darin einfügen. Eigentlich ist mein Code:HTML-Code in SVG einfügen Textelement

<text x="10" y="54" text-anchor="start" class="barLegend">Hello!</text> 

Und ich möchte etwas wie folgt setzen:

<text x="10" y="54" text-anchor="start" class="barLegend"><a href='www.gmail.com'>Gmail</a></text> 

Natürlich habe ich den Link Arbeits wollen, aber ist es nur alle HTML-Anzeige.

Irgendeine Idee?

Antwort

20

einen Blick hier nehmen:

http://web.archive.org/web/20120418122612/http://ajaxian.com/archives/foreignobject-hey-youve-got-html-in-my-svg

Der SVG foreign Tag ermöglicht Ihnen das nicht-SVG-Inhalt in der Seite zu mischen. Sie könnten beispielsweise HTML in der Mitte eines SVG-Elements ablegen.

+5

Ein foreignObject-Tag kann kein untergeordnetes Element eines Textelements sein. –

+1

Danke! Eine Lösung für diesen Link gefunden: http://groups.google.com/group/d3-js/browse_thread/thread/77671e2884df4f1d – todotresde

+0

Leider unterstützt IE keine fremden Objekte. –

3

Sie haben den foreignObject Tag zu verwenden, zum Beispiel:

<foreignObject width="100" height="50" 
        requiredExtensions="http://example.com/SVGExtensions/EmbeddedXHTML"> 
    <body xmlns="http://www.w3.org/1999/xhtml"> 
    <a href='www.gmail.com'>Gmail</a> 
    </body> 
</foreignObject> 

Siehe auch hier http://www.w3.org/TR/SVG/extend.html und https://developer.mozilla.org/en/SVG/Element/foreignObject

+5

Ein foreignObject-Tag darf kein Kind eines Textelements sein. –

+1

Danke! Das ist die Art zu benutzen, wonach ich suche. Außerdem habe ich einen Link gefunden, wenn jemand das gleiche Problem mit D3 hat: http://groups.google.com/group/d3-js/browse_thread/thread/77671e2884df4f1d – todotresde

17

Warum nicht ein SVG <a> Element in diesem Fall benutzen? Vergiss nicht, dass die href auch xlink: href sein muss. Z.B.

<text x="10" y="54" text-anchor="start" class="barLegend"><a xlink:href='http://www.gmail.com'>Gmail</a></text> 

Nur SVG Animationselemente, beschreibende Elemente (<title> oder <desc>), Textinhalt Kind-Elemente (<tspan> oder <textPath>) oder SVG <a> Element als Kinder von Textelementen erlaubt.

+0

Mmmm, nicht klar was der Unterschied ist. Könnten Sie ein Beispiel hinzufügen? – todotresde

+0

ein Svg-Link-Element ist im Svg-Namespace, ein HTML-Link-Element ist im HTML-Namespace, sonst sehen sie ziemlich ähnlich. –

0

Eine andere Lösung hier ist, ein Ereignis auf das Element zu setzen und JavaScript zu verwenden, um die Ziel-URL zu öffnen .. und das Tag überhaupt nicht zu verwenden.

+0

Willkommen bei stackoverflow. Dies gibt keine Antwort auf die Frage. Sobald Sie genügend Reputation haben, können Sie jeden Post kommentieren; Stellen Sie stattdessen Antworten bereit, die vom Fragesteller nicht geklärt werden müssen. –

+0

Dies liefert keine Antwort auf die Frage. Sobald Sie genug [Reputation] (https://stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (https://stackoverflow.com/help/privileges/comment); Stattdessen [geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern] (https://meta.stackexchange.com/questions/214173/why-doe-i-need-50-reputation-to-comment-what-can- i-do-stattdessen). - [Aus Bewertung] (/ review/low-quality-posts/17222974) – Omi

Verwandte Themen