SVGをjavascriptで動的に作成してみるテスト

SVGに対応しているブラウザだと、javascriptを使ってHTML内で動的にSVGを作れるらしい。
と、言うわけでテスト。
以下のソースをbody内の適当な位置に挿入すると緑縁の青い円が表示されます。
表示するだけじゃつまらないのでちょっと動きます。

<div id="svgBox"></div>

<script type="text/javascript">
<!--
var ns;
var svg, circle;
var x = 55, y = 55;
var dx = 2, dy = 2;
var r = 50, d = 5, w = 400, h = 300;

function amime() {
x += dx;
y += dy;
if(x<r+d || x>w-(r+d)) dx = -dx;
if(y<r+d || y>h-(r+d)) dy = -dy;
circle.setAttribute("cx", x);
circle.setAttribute("cy", y);
}

function init() {
ns = "http://www.w3.org/2000/svg";
svg = document.createElementNS(ns, "svg:svg");
svg.setAttribute("width", w);
svg.setAttribute("height", h);

circle = document.createElementNS(ns, "svg:circle");
circle.setAttribute("cx", x);
circle.setAttribute("cy", y);
circle.setAttribute("r", "50");
circle.setAttribute("stroke", "#00FF00");
circle.setAttribute("stroke-width", "10");
circle.setAttribute("fill", "#0000FF");
circle.setAttribute("id", "circle");
svg.appendChild(circle);

document.getElementById('svgBox').appendChild(svg);

setInterval(amime, 20);
}

init();
//-->
</script>

表示例はこちら


残念ながら、SVGに対応していないIEでは表示できません。とりあえず、FireFox3.6.6、Safari4.0.5、Opera10.60、Google Chrome5.0での動作を確認。
Flashなんか使わなくても、テキストエディタだけでアニメーションが作れるのは便利便利。



それにしてもIEはいつになったらSVGに対応するんだろう?
徐々に他ブラウザがシェアを伸ばしてきているとはいえ、まだまだIEは無視できない。
IEさえ対応すれば、SVGももっと普及するのにね。


広告を非表示にする