2011-12-10 8 views
10

this कोड के आधार पर के साथ चेतन, मैं एक गतिशील रूप से निर्मित एसवीजी तत्व चेतन करने के लिए कोशिश कर रहा हूँ:एसवीजी गतिशील रूप से जोड़ा तत्वों

var svgnode = document.createElementNS('http://www.w3.org/2000/svg','svg'); 
var circle = document.createElementNS('http://www.w3.org/2000/svg','circle'); 
circle.setAttribute("cx", "10"); 
circle.setAttribute("cy", "10"); 
circle.setAttribute("r", "10"); 
circle.setAttribute("fill", "blue"); 
var ani = document.createElementNS("http://www.w3.org/2000/svg","animateTransform"); 
ani.setAttribute("attributeName", "transform"); 
ani.setAttribute("attributeType", "xml"); 
ani.setAttribute("type", "translate"); 
ani.setAttribute("from", "10"); 
ani.setAttribute("to", "100"); 
ani.setAttribute("begin", "0s"); 
ani.setAttribute("dur", "2s"); 
ani.setAttribute("fill", "freeze"); 
circle.appendChild(ani); 
svgnode.appendChild(circle); 
document.getElementById('mydiv').appendChild(svgnode); 

एसवीजी ठीक दिखाई देता है, लेकिन एनीमेशन काम नहीं करता। यदि मैं सादे HTML/SVG में समकक्ष कोड लिखता हूं तो यह काम करता है। मैं क्रोम का उपयोग कर रहा हूँ।

+2

यह काम कर रहा है, क्रोम के तहत v15 http://jsfiddle.net/SF5nE/ – Bakudan

+1

अपग्रेड यह काम करता है बता सकते हैं - धन्यवाद! – Hendekagon

उत्तर

5

क्रोम पर गतिशील रूप से जोड़े जाने पर यह काम नहीं करेगा (एफएफ के साथ काम करेगा)।

http://jsfiddle.net/tap0ri/SF5nE/2/

यह है क्रोम बग प्रतीत हो रहा है देखते हैं।

+0

हां, यह बहुत परेशान है क्योंकि इसका मतलब है कि आप किसी सर्वर से संदेशों के जवाब में एनिमेशन को ट्रिगर नहीं कर सकते हैं – Hendekagon

+0

मैंने दस्तावेज़ पर "svg पूल" के कुछ किंड बनाने के साथ हैक की कोशिश की है और मैं अंदरूनी तत्वों को गतिशील रूप से जोड़ने के लिए किसी भी svg का उपयोग करूंगा यह। – Chetan

+0

कृपया विस्तृत करें ... – Hendekagon

-1

करता है के साथ viewBox = "0 0 0 0" दोनों नाविकों पर नहीं काम करता है।

वर्क्स यहाँ:

<div id="mydiv"> 
    <svg id="svgNode" version="1.1" width="100%" height="100%" viewBox="0 0 100% 100%" preserveAspectRatio="xMidYMid meet" id="ext-element-180"></svg> 
</div> 

देखें: https://jsfiddle.net/oOroBax/xkb89y4h/

+0

इस प्रश्न के साथ क्या करना है? –

0

मैं अभी भी है एक ही समस्या 5 साल के पहले :) (और svg-फ़िल्टर भी साथ)

मैं उपयोग पालन हैक:

1. मैं सभी सेट गुणों को सेट कर सकता हूं, उदाहरण के लिए ani.setAttr ibute ("विशेषता नाम", "रूपांतरित");

2. मैंने पढ़ा है और मेरी svg-रूट innerHTML सेट: $ svgRoot.html ($ svgRoot.html());

आशा है कि यह किसी को मदद मिलती है, या किसी ने मुझे एक बेहतर तरीका :)