html
  • text
  • svg
  • 2012-03-30 86 views 26 likes 
    26

    我有一個svg:文本節點,並且我想在其中添加HTML代碼。其實,我的代碼是:在SVG文本元素中插入HTML代碼

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

    而且我希望把這樣的事情:

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

    當然,我希望鏈接的工作,但是,它只是顯示所有的HTML。

    任何想法?

    回答

    20

    到這裏看看:

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

    的SVG foreignObject標籤可以讓你非SVG內容混合到您的網頁。例如,您可以在SVG元素的中間放置一些HTML。

    +5

    foreignObject標記不能是文本元素的子元素。 – 2012-03-30 16:26:18

    +1

    謝謝!在此鏈接上創建解決方案:http://groups.google.com/group/d3-js/browse_thread/thread/77671e2884df4f1d – todotresde 2012-03-30 17:34:04

    +0

    不幸的是,IE不支持foreignObject – 2016-07-26 13:13:05

    3

    您必須使用foreignObject標記,例如:

    <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> 
    

    參見這裏http://www.w3.org/TR/SVG/extend.htmlhttps://developer.mozilla.org/en/SVG/Element/foreignObject

    +5

    foreignObject標記不能是文本元素的子項。 – 2012-03-30 16:26:55

    +1

    謝謝!這是使用我正在尋找的方式。另外,當有人遇到與D3相同的問題時,我找到了一個鏈接:http://groups.google.com/group/d3-js/browse_thread/thread/77671e2884df4f1d – todotresde 2012-03-30 17:32:57

    17

    爲什麼不能在這種情況下使用SVG <a>元素?不要忘記,href需要是xlink:href。例如。

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

    只有SVG動畫元素,描述性元素(<title><desc>),文本內容的子元素(<tspan><textPath>)或SVG <a>元素都可以作爲文本元素的兒童。

    +0

    嗯,不清楚是哪個區別。你可以添加一個例子嗎? – todotresde 2012-03-30 17:20:01

    +0

    svg鏈接元素位於svg名稱空間中,html鏈接元素位於html名稱空間中,否則它們看起來非常相似。 – 2012-03-30 18:40:54

    0

    此處的另一個解決方案是在該項目上放置事件並使用JavaScript打開目​​標URL ..並且完全不使用該標籤。

    +0

    歡迎使用stackoverflow。這並不能解答這個問題。一旦你有足夠的聲譽,你將能夠評論任何帖子;相反,提供不需要提問者澄清的答案。 – 2017-09-03 14:39:48

    +0

    這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/17222974) – Omi 2017-09-03 15:40:06

    相關問題