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

アップデート

私はハイチャートを使用しており、canvg()に渡すことができるgetSVG()関数がありますが、問題は最新の更新を取得できないことです。そのため、この方法で実行する必要があります。getSVG()関数を実行すると、続く : ここに画像の説明を入力してください

リンク

4

2 に答える 2

23

私が思い出す限り、jQuery.html()innerHTMLsvgではなくhtmlを対象としています。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チャートが1つしかない場合は、次を使用します。

$('svg').html();

存在する以上の場合は、highcharts_containerのdivがあることを確認してください。これは、それらがそのsvgチャートを作成するためです。それらを使用している場合。
次に、以下を使用します。

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