2011-12-10 36 views
10

Dựa trên this mã, tôi đang cố gắng để animate một yếu tố SVG được tạo tự động:SVG động với các yếu tố tự động thêm vào

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); 

các SVG hiện tốt, nhưng các hình ảnh động không hoạt động. Nếu tôi viết mã tương đương trong HTML/SVG đơn giản thì nó hoạt động. Tôi đang sử dụng Chrome.

+2

Nó đang làm việc, dưới Chrome v15 http://jsfiddle.net/SF5nE/ – Bakudan

+1

nâng cấp & nó hoạt động - cảm ơn! – Hendekagon

Trả lời

5

Nó sẽ không hoạt động nếu được thêm động sau này trên chrome (sẽ hoạt động với FF).

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

điều này có vẻ là lỗi chrome.

+0

vâng, điều này rất khó chịu vì điều đó có nghĩa là bạn không thể kích hoạt hoạt ảnh để phản hồi tin nhắn từ máy chủ – Hendekagon

+0

Tôi đã cố gắng hack bằng cách tạo ra somekind "svg pool" trên document.ready và tôi sẽ sử dụng bất kỳ svg nào để tự động thêm các phần tử bên trong nó. – Chetan

+0

xin vui lòng xây dựng ... – Hendekagon

-1

không hoạt động trên cả hai hàng hải với viewBox = "0 0 0 0".

trình ở đây:

<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> 

see: https://jsfiddle.net/oOroBax/xkb89y4h/

+0

Điều này có liên quan gì đến câu hỏi này? –

0

tôi vẫn có cùng một vấn đề 5 năm trước :) (và với svg-Filter quá)

tôi sử dụng sau hack:

1. Tôi đặt tất cả các thuộc tính có thể là wit setAtteribute, ví dụ ani.setAttr ibute ("attributeName", "transform");

2. Tôi đọc và thiết lập innerHTML svg-gốc của tôi: $ svgRoot.html ($ svgRoot.html());

Hy vọng nó sẽ giúp ai đó, hoặc ai đó có thể cho tôi biết một cách tốt hơn :)

Các vấn đề liên quan