気がつけばすくりぷた - DOM と innerHTML

いつの間にか、C/C++よりも、C#よりも、ActionScriptよりも、JavaScriptに触れている時間のほうが長くなりました。型付けガチガチ、コンパイル時妥当性検証な精神がやられつつあります。型?あぁ、prototypeですか?みたいな。$ 関数しか使ってなかった Prototype.js ですが、そこそこ使えるようになって来ました。YUI (キーワード誤爆激しそう……)はまだ手を付けてません。C++ のテンプレート並みにプログラマの変態度が試されてる気がします。てきとーに変態的コードを書いて、あ、動いちゃった。みたいな。そんなわけで最近思うこと。

Safari対応のWindowsアプリやiPhoneアプリを容易にテストできるようにすることにより、これらのアプリの開発者を促進するのが狙いだ。これで開発者は、WebアプリがSafari上できちんと動作するか確認するのに、Macを借りたり盗んだりしなくても済む」

まさに思っていたことを書いてくれた記事。Mac 開発者じゃなくてもそう思いますから。iPhone 向けソフトウェアの開発はこの前のキーノート聞いた限りでは Safari 上でやるしか無い訳で、逆に言えば Safari があればできるわけです。これで canvas を使う JavaScript が増えて、その結果 IEcanvas に対応、もしくは対応せずに IE 離れ加速とかなれば面白いんですけどね。

  • -

予想通りキーワード誤爆してるっぽかったのでキーワード解除>YUI = Yahoo! User Interface Library。そしてタイトルに書いてある DOM と innerHTML について何も書いてなかったのを思い出したので追記します。

ここに何か入るよ
<div id="sukima"></div>

<script language="javascript">
// 方法 1
$('sukima').innerHTML += 'すきま';
// 方法 2
$('sukima').appendChild(document.createTextNode('すきま'));
</script>

の 2 パターンがあってどうしましょうね、という話です。DOM 原理主義で突っ走るなら方法 1 を徹底的に排除するべきだと思うんですが、そこまでしてもなぁ。みたいな。ある程度複雑な要素を追加するときはほぼ appendChild() 使ってますが、上記の様な簡単な例でさえ使うかと言われるとなんとも。結果は(多分)同じなのに方法論で悩むのはあまり良くないですね。