2017-10-10 110 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