在HTML中嵌入嵌入式SVG中的HTML?

允许在 HTML中嵌入SVG …
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Hmmm....</title>
    </head>
    <body>
        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="0" y="0" width="500px" height="100%">
            <text>Hello cruel world!</text>
        </svg>
    </body>
</html>

……反之亦然:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="0" y="0" width="500px" height="100%">
    <foreignObject x="0" y="0" width="100%" height="100%">
        <body xmlns="http://www.w3.org/1999/xhtml">
            <h1>Goodbye cruel world...</h1>
        </body>
    </foreignObject>
</svg>

规范say(23.2,第三段)(和我引用:)“如果你想在SVG的XHTML中将SVG嵌入到SVG中的SVG中,那就没关系……”.我想哇,那太深了!并做到了这一点:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Yeah!</title>
    </head>
    <body>
        <svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="0" y="0" width="500px" height="100%">
            <foreignObject x="0" y="0" width="100%" height="100%">
                <body class="svgbody" xmlns="http://www.w3.org/1999/xhtml">
                    <h1>And hello again!</h1>
                </body>
            </foreignObject>
        </svg>
    </body>
</html>

但是所有浏览器都将body标签与HTML5 body标签合并(HTML5 body标签获取svgbody类)…这是fiddle(fullscreen);内联svg中没有正文标记.

我不知道为什么,我希望你能帮助我!可以通过将SVG放在不同的文件中来解决,但我不想听到它.为什么不起作用?

解决方法

需要记住的一件事是SVG文档正在XML文档中讨论SVG中的XHTML.您不是使用XML而是使用HTML.这是HTML解析器的一个功能,它以您看到的方式合并正文标记.

如果您使用的是XML解析器,则不会发生合并.要实现此目的,您需要使用application / xhtml xml内容类型提供文档.如果你这样做,那么你需要解决其他问题,例如在你的html元素中添加xmlns =“http://www.w3.org/1999/xhtml”属性.

遵循罗伯特的建议要容易得多.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 &lt;div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些