为什么.html()不能与使用jquery的SVG选择器一起使用?

问题可以有人告诉我如何将我的SVG元素转换为字符串?

我正在使用canvg将我的SVG转换为图像。

它必须先在canvas中渲染, canvg()方法需要SVG STRING

代码:

  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 }); } 

我试过了

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

注意到

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

更新

我正在使用highcharts有一个getSVG()函数,我可以传递给canvg(),但问题是它没有得到最新的更新,所以我必须这样做,当运行getSVG()函数时我得到以下内容: 在此处输入图像描述

链接

据我所知,jQuery的.html()使用了对于html而不是svg的innerHTML 。 SVG是xml文档,因此您可以使用XMLSerializer()

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

对于这个问题,你没有得到你的svg内容,
如果页面上只有一个svg图表,那么使用:

 $('svg').html(); 

如果超过现在,那么请看看有一个highcharts_container div,因为他们创建了svg图表。 如果你正在使用它们。
然后使用:

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