JavaScriptでSVGを書く

IE9SVGをネイティブ実装するそうだ。SVGが主要なブラウザの標準機能になればWebアプリでもデータをグラフ化してビジュアル的に表示する、なんて要件も普通に求められるようになるだろうな。

というわけで今のうちにちょっと触れておこう。

SVGXML形式のベクタ画像フォーマットなので、imgタグとかobjectタグで表示するだけではなく、XHTMLに直接埋め込む事ができる。もっともFirefox 3.6とか最近のブラウザでもHTMLへの埋め込みには対応してない*1ようだが、IE9が出るまでには対応されるだろう。

また、SVGXMLなのでJavaScriptでDOMインターフェースを介して操作できる。現行のFirefoxでもJavaScriptを使ってSVGを動的生成し、HTMLに追加した場合は正しく表示されるようだ。

HTML埋め込みにせよ、JavaScriptで操作するにせよ従来のHTMLと同様に扱える。となれば恐れることは何もない。

とりあえず丸を書いてみる

XHTMLの要素とは名前空間が異なるので createElementNS で名前空間を指定して要素を生成する必要がある点に注意だ。

ラスタ画像を表示してみる

だいたいわかった。全く難しくないが、ちょー面倒くさい。jQuery等の便利ライブラリに慣れてしまった今となっては setAttribute なんてやってられん…。ほとんどのJavaScriptライブラリはXML名前空間に対応していないのでSVGを扱えないが、そのうちjQuerySVGとか出てくるんじゃないですかね…。ふつーのWeb開発者はそれまで待っても良いと思う

*1:Content-Typeが application/xhtml+xml ならば埋め込みSVGを表示可能