4

我在 SVG 中使用了 foreignObject 元素,但是 IE9 不支持这个元素。我正在寻找一种检测此功能的方法。Modernizr 没有检测到这个功能,而且我似乎不能像对矩形 (createSVGRect) 那样使用 createSVGForeignObject(在 SVGSVGElement 上不可用)。

谢谢!

4

2 回答 2

4

如果您想使用foreignObject,这应该可以工作,因为它集成了html内容......

<switch>
  <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" requiredExtensions="http://www.w3.org/1999/xhtml">
    <foreignObject >
    </foreignObject>
  </g>
  <text font-size="10" font-family="Verdana">
     No foreignObject
  </text>
</switch>

向 w3c 提出的 requiredExtensions 部分,这是他们的回应。Firefox 确实实现了这一点,但我还没有测试过其他任何东西。正如 Erik 建议的那样,您也许可以只使用 requiredFeatures 属性。

如果您想在 javascript 中进行测试,请尝试

var supported = document.implementation.hasFeature("http://w3.org/TR/SVG11/feature#Extensibility", "1.1"); –  
于 2012-06-21T07:24:10.827 回答
3

有一种方法可以在 JS 中测试此功能,以下内容是从最近对modernizr 的提交中借用的(https://github.com/Modernizr/Modernizr/commit/ee836f083f29a9e634df731400027c24630a75f3):

        var toStringFnc = ({}).toString;
        Modernizr.addTest('svgforeignobject', function() {
            return !!document.createElementNS &&
                /SVGForeignObject/.test(toStringFnc.call(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject')));
        });
于 2014-07-04T03:02:18.483 回答