2017-10-10 202 views
0

我尝试获取属性innerSVG值和catch undefinedenter image description hereInnerSVG在IE11中为SVG元素为空

不明白请去安慰内容,我用jQuery('#main_svg')[0].innerSVG

+0

你有没有加载[库](https://code.google.com/archive/p/innersvg /)? – ccprog

+0

我需要什么图书馆? –

+0

任何标准都没有innerSVG属性。这个库的发明是将innerHTML转换为SVG内容。因此,请使用此库或[Snap.svg](http://snapsvg.io/docs/#Element.innerSVG),它具有innerSVG()函数,或根本不使用它。 – ccprog

回答

1

没有任何标准没有innerSVG财产。根据DOM Parsing and Serialization specElement.innerHTML应该也适用于SVG或其他XML内容。

在2009年,库innnerSVG发布到

提供所有SVGElements

这显然,在那个时候,并没有在所有的浏览器innerHTML属性。它包含自己的XML序列化器的实现。源代码中的众多评论似乎表明这是一个相当不完整的内容。

由于Internet Explorer 9,它不再真的需要,因为有支持XMLSerializer。虽然IE 11似乎有一个bug和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; 
    } 
} 
+0

我需要在ie中替换内部svg结构,我该怎么做? 在其他浏览器我使用svg.innerHTML = someXML;' –

+0

我没有测试过它,但[此功能](https://github.com/dnozay/innersvg-polyfill/blob/master/innersvg.js# L61)应该工作。 – ccprog