问题有人可以告诉我如何将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(),但问题是它没有得到最新的更新,所以我必须这样做,当运行{ {1}}功能我得到以下内容:
答案 0 :(得分:21)
据我所知,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);
答案 1 :(得分:0)
对于您没有获得svg内容的问题,
如果页面上只有一张svg图表,请使用:
$('svg').html();
如果超过现在,那么请看看有一个highcharts_container div,因为他们创建了svg图表。如果你正在使用它们。
然后使用:
$('id of that div').html();