使用<;开关>;与<;外物>;在SVG中

使用<;开关>;与<;外物>;在SVG中,svg,Svg,我试图在SVG中正确地实现foreignObject标记的开关标记,以便Internet Explorer可以显示其他内容(IE中没有什么新内容,总是忽略功能)。关于如何做到这一点,文档几乎非常清楚: 这里有一段需要换行 这里有一段 需要换行。 这个例子很好,也很清楚,它展示了如何使用requireExtensions属性。然而,超链接“http://example.com/SVGExtensions/EmbeddedXHTML“这对我来说毫无意义。为了表示XHTML是这个外来对象所需的扩

我试图在SVG中正确地实现foreignObject标记的开关标记,以便Internet Explorer可以显示其他内容(IE中没有什么新内容,总是忽略功能)。关于如何做到这一点,文档几乎非常清楚:


这里有一段需要换行

这里有一段 需要换行。


这个例子很好,也很清楚,它展示了如何使用requireExtensions属性。然而,超链接“http://example.com/SVGExtensions/EmbeddedXHTML“这对我来说毫无意义。为了表示XHTML是这个外来对象所需的扩展,我必须用什么来代替它

不幸的是,除了Firefox使用
http://www.w3.org/1999/xhtml
表示它在foreignObject标记中支持xhtml(和
http://www.w3.org/1998/Math/MathML
用于mathml)。我相信其他UAs可能已经复制了这一点,但我没有检查。

经过多次修改,我找到了答案。该示例可能应该添加到文档中。。。到目前为止,我已经在IE、FF和Chrome中进行了测试,三者都正确处理了开关:

我没有使用“requiredExtensions”属性,而是使用了“requiredFeatures”属性并链接到http://www.w3.org/TR/SVG11/feature#Extensibility"

所以它看起来像:



这可以用于测试用户代理是否支持foreignObject,但这并不完美,因为您仍然没有指出用户代理可能不支持的foreignObject中计划使用的外部命名空间。尽管它比什么都不做要好。

尽管他们在文档中使用了这一点,但我还没有看到一款浏览器能够正确处理这一点。请参阅我使用“requiredFeatures”而不是“requiredExtensions”的回答一个警告:虽然这会考虑到IE,它根本不支持foreignObject,但在一般支持foreignObject但不支持XHTML的环境(例如,Illustrator等自定义图形程序)中查看SVG时,它将不起作用。相关: