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

Min*_*iel 15 javascript jquery svg highcharts highstock

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

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

它必须首先在画布中渲染,该canvg()方法期待aSVG 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 });
        }
Run Code Online (Sandbox Code Playgroud)

我试过了

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

注意到

  $('#container svg') 
  $('#container').html() // both works fine and
Run Code Online (Sandbox Code Playgroud)

更新

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

链接

met*_*ion 22

据我所知,jQuery .html()使用的innerHTML是html,而不是svg.SVG是xml文档,所以你可以使用XMLSerializer()

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