2012-07-09 12 views
15

प्रश्न क्या कोई मुझे बता सकता है कि मैं अपने एसवीजी तत्व को स्ट्रिंग में कैसे परिवर्तित कर सकता हूं?क्यों .html() jquery का उपयोग कर एसवीजी चयनकर्ताओं के साथ काम नहीं करता है?

मैं अपने एसवीजी को एक छवि में बदलने के लिए canvg का उपयोग कर रहा हूं।

यह, 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 (करने के लिए पारित कर सकते हैं है), लेकिन समस्या यह नवीनतम अपडेट प्राप्त dosen't है, इसलिए मुझे क्या करना है यह इस तरह से, getSVG() समारोह चल रहा है जब मैं निम्नलिखित मिल: enter image description here

LINK

+0

अपनी दस्तावेज़ीकरण से, "canvg एक एसवीजी पार्सर और रेंडरर है।"। यदि आपके पास पहले से ही एसवीजी है, या तो एक स्ट्रिंग या यूआरएल संदर्भ के रूप में, आप इसे कैनवास में लोड कर सकते हैं, फिर छवि को निकालने के लिए वर्णित कैनवास विधियों का उपयोग करें। लेकिन आपको एसवीजी से शुरू करने की जरूरत है। पुस्तकालय के लिए यही है। –

+0

मुझे लगता है कि मुझे जिक्र करना चाहिए कि मैं हाईचार्ट्स का उपयोग कर रहा हूं, कृपया मेरा अपडेट –

+0

मैबी तैयार होने तक प्रतीक्षा करें? 'document.ready()' –

उत्तर

21

जहां तक ​​मुझे याद है सकते हैं jQuery के .html() जो एचटीएमएल के लिए है innerHTML का उपयोग करता है, svg नहीं एसवीजी के एक्सएमएल दस्तावेज हैं, तो आप XMLSerializer()

var svg = document.getElementById('svg_root'); // or whatever you call it 
var serializer = new XMLSerializer(); 
var str = serializer.serializeToString(svg); 
+0

क्या आप हमें निम्नलिखित [jsfiddle] (http://jsfiddle.net/minagabriel/uaxZP/4/) पर ऐसा करने के लिए दिखा सकते हैं मैंने कोशिश की और यह काम नहीं किया .... धन्यवाद Duopixel –

+0

http: // jsfiddle.net/z8gWw/ आप शायद आईडी – Duopixel

+1

आईडी खो रहे हैं या आप आईडी के बिना चयनकर्ता से DOM तत्व प्राप्त करने के लिए 'var svg = $ (" # कंटेनर svg ") [0]; 'का उपयोग कर सकते हैं। – Rup

0

समस्या आप अपने svg सामग्री नहीं मिल रहा है के लिए, का उपयोग कर सकते
तो केवल एक svg चार्ट पृष्ठ पर है तो का उपयोग करें:

$('svg').html(); 

और अगर वर्तमान से अधिक कृपया देखें कि highcharts_container का एक div है क्योंकि वे उस svg चार्ट बनाते हैं। यदि आप उनका उपयोग कर रहे हैं।
तब का उपयोग करें:

$('id of that div').html(); 
संबंधित मुद्दे