2017-10-10 14 views
0

J'essaie d'obtenir la propriété innerSVG valeur et attraper undefined. enter image description hereInnerSVG est vide pour l'élément SVG dans IE11

Vous ne trouvez pas plaisir de contenu consoler, je l'ai utilisé jQuery('#main_svg')[0].innerSVG

+0

Avez-vous avez chargé la [Bibliothèque] (https://code.google.com/archive/p/innersvg /)? – ccprog

+0

Qu'est-ce que j'ai besoin de la bibliothèque? –

+0

Il n'existe aucune propriété innerSVG dans aucune norme. C'est une invention de cette bibliothèque de porter le contenu innerHTML au format SVG. Donc, soit utilisez cette bibliothèque, soit [Snap.svg] (http://snapsvg.io/docs/#Element.innerSVG), qui a une fonction innerSVG(), ou ne l'utilisez pas du tout. – ccprog

Répondre

1

Il n'y a pas de propriété innerSVG dans toute norme. Selon DOM Parsing and Serialization specElement.innerHTML devrait fonctionner aussi pour SVG ou autre contenu XML.

En 2009, une bibliothèque innnerSVG a été publié à

fournir la propriété innerHTML sur tous SVGElements

Ce qui semble, à ce moment-là, ne fonctionne pas dans tous les navigateurs. Il contient sa propre implémentation d'un sérialiseur XML. Les nombreux commentaires TODO dans le code source semblent indiquer qu'il est assez incomplet.

Depuis Internet Explorer 9, il n'est plus vraiment nécessaire, car il existe un support pour XMLSerializer. Alors que IE 11 semble avoir un bug et que cela ne fonctionnera pas pour retourner le contenu 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

j'ai besoin de remplacer la structure svg intérieure en ie, que dois-je faire? dans d'autres navigateurs j'utilise 'svg.innerHTML = someXML;' –

+0

Je ne l'ai pas testé, mais [cette fonction] (https://github.com/dnozay/innersvg-polyfill/blob/master/innersvg.js# L61) est supposé fonctionner. – ccprog