¿Por qué .html () no funciona con los selectores de SVG que usan jquery?

Pregunta: ¿alguien puede decirme cómo puedo convertir mi elemento SVG en una cadena?

Estoy usando canvg para convertir mi SVG a una image.

primero tiene que renderizarse en un canvas, el método canvg() espera un SVG STRING

código:

  function updateChartImage(){ canvg(document.getElementById('canvas'),expecting ` svg string`); var canvas = document.getElementById("canvas") ; var img = canvas.toDataURL("image/png"); img = img.replace('data:image/png;base64,', ''); $("#hfChartImg").val(img) ; $('#img').attr({ src: img }); } 

Yo he tratado

 $('#container svg').html() ; // it gives me an error //Uncaught TypeError: Cannot call method 'replace' of undefined 

Darse count de

  $('#container svg') $('#container').html() // both works fine and 

Actualizar

Estoy utilizando Highcharts el tener una function getSVG () que puedo pasar a la canvg () pero el problema es que no recibe las últimas actualizaciones, así que tengo que hacerlo de esta manera, cuando se ejecuta la function getSVG() obtengo lo siguiente: enter image description here

ENLAZAR

Por lo que puedo recordar, jQuery's .html() hace uso de innerHTML que está destinado para html, no svg. SVG son documentos xml, por lo que puede usar XMLSerializer()

 var svg = document.getElementById('svg_root'); // or whatever you call it var serializer = new XMLSerializer(); var str = serializer.serializeToString(svg); 

Para el problema, no estás obteniendo tu contenido svg,
Si solo hay un diagtwig de svg en la página, utiliza:

 $('svg').html(); 

y si es más que presente, por favor, vea que hay un div de highcharts_container porque crean esos charts svg. Si los estás usando.
Luego usa:

 $('id of that div').html();