16

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

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

它必须首先在画布中渲染,该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()函数时我得到了下列的 : 在此处输入图像描述

关联

4

2 回答 2

23

据我所知,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);
于 2012-07-09T14:56:22.563 回答
0

对于您没有获得 svg 内容的问题,
如果页面上只有一个 svg 图表,则使用:

$('svg').html();

如果超过现在,请查看 highcharts_container 的 div,因为它们创建了 svg 图表。如果你正在使用它们。
然后使用:

$('id of that div').html();
于 2013-04-26T08:03:42.897 回答