为什么.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();