2017-10-10 1 views
0

에서 SVG 요소에 대한 비어 있습니다. enter image description hereInnerSVG 내가 재산 <code>innerSVG</code> 값을 얻을 <code>undefined</code>을 잡으려고 IE11

, 나는 표준에는 innerSVG 속성이 없습니다 jQuery('#main_svg')[0].innerSVG

+0

당신은 https://code.google.com/archive/p/innersvg합니다 ([라이브러리]로드 한 마 /)? – ccprog

+0

라이브러리가 필요합니까? –

+0

표준에 innerSVG 속성이 없습니다. innerHTML을 SVG 컨텐츠로 이식하는 것은이 라이브러리의 발명품입니다. 그래서하는 innerSVG() 함수를 가지고, 또는 전혀 사용하지 않는이 라이브러리, 또는 [Snap.svg] (http://snapsvg.io/docs/#Element.innerSVG)를 사용 하나. – ccprog

답변

1

사용했던 내용을 콘솔에 만족 표시되지 않습니다. DOM Parsing and Serialization spec에 따르면 Element.innerHTML은 SVG 또는 기타 XML 콘텐츠에도 적용됩니다.

는 2009 년 도서관 innnerSVG 분명히, 그 시간에, 모든 브라우저에서 작동하지 않았다 모든 SVGElements

에 innerHTML 속성을 제공

에 출판되었다. 여기에는 자체 XML serializer 구현이 포함되어 있습니다. 소스 코드의 수많은 TODO 주석은 상당히 불완전한 것으로 보입니다. XMLSerializer에 대한 지원이있는 한

은 인터넷 익스플로러 9 있기 때문에, 더 이상 정말 필요하지 않습니다. 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; 
    } 
} 
+0

즉 내부 svg 구조체를 교체해야합니다. 어떻게해야합니까? 제가 사용하는 다른 브라우저 'svg.innerHTML = someXML; ' –

+0

그것을 테스트 있지만 havn't는 [이 함수 (https://github.com/dnozay/innersvg-polyfill/blob/master/innersvg.js# L61)가 작동해야합니다. – ccprog

관련 문제