对于IE11中的SVG元素,InnerSVG为空

时间:2017-10-10 18:12:33

标签: svg internet-explorer-11

我尝试获取属性innerSVG值并捕获undefinedenter image description here

请注意,请使用jQuery('#main_svg')[0].innerSVG

来控制内容

1 个答案:

答案 0 :(得分:1)

任何标准都没有innerSVG属性。根据{{​​3}} Element.innerHTML,也应该适用于SVG或其他XML内容。

2009年,图书馆<memory> header发布到

  

在所有SVGElements上提供innerHTML属性

当时显然,并非在所有浏览器中都有效。它包含自己的XML序列化器实现。 源代码中的大量TODO条评论似乎表明它是相当不完整的。

自Internet Explorer 9以来,不再需要它,因为支持XMLSerializer。虽然IE 11似乎有一个错误并且没有返回innerHTML的内容,但这将起作用:

function getInnerHTML (el) {
   if (el.innerHTML === undefined) {
       var XMLS = new XMLSerializer();
       var nodes = [];
       for (var i = 0; i < el.childNodes.length; i++) {
         nodes.push(XMLS.serializeToString(el.childNodes[i]));
       }
       return nodes.join('');
   } else {
       return el.innerHTML;
   }
}