Jintrick.netagenda2002年12月アーカイブ → 2002年12月04日

fub_net 日記(3)

DOM弄りを楽しんでいます。過去の文書操作系のカスタムパネルは、DOM Inspectorをリッチにする形で統一しようと考えています(DOMといってもDOM1 HTML)。その他、危険な香りのするバグを発見したりしました。

妥当でないHTML文書のDOMツリー

ツリーの構築は:

  1. 表示しているHTML文書のルート要素(HTML要素)をパラメータとしたGUI操作用クラスのインスタンスを生成
  2. 記号をクリックした際、childNodesの各itemについて同様のインスタンスを生成

という形で行っています。一気にツリー全てを構築しようとすると、凄まじく時間がかかるからです。最初、これは私のJScriptコードに問題があるのかと思いましたが、何十回と繰り返されるappendChildメソッドによる描画速度の問題のようです。

しかしDOMツリーをカスタムパネル内に視覚化できたとしても、文書内のある要素が、DOMツリー上のどの位置にあるのかが分からなければ、これは完全に遊びに終ってしまうでしょう。fub_netの素晴らしい点は、アクティブタブ内に表示している文書のイベントを、カスタムパネル側で処理できることです。この特徴を利用すれば、「要素をクリックする」等のアクションを介して、DOMツリー上のその要素の位置をスタイルの変更等によって明示することが可能です。

要するにそこで躓いたわけです。わらい。

Ctrl + 右クリックでDOMツリーを展開し、クリックした要素の位置を明示するようにしました。真っ当なHTML文書であれば今のところ問題なく動作するのですが、b要素の子にul要素があるような「妥当でないHTML文書」の場合、その周辺で訳の分からないエラーが発生します。どうにもこうにも原因が分かりません。

危険な香りのするバグ

これは実はfub_netのバグではありません。IE6のバグです。簡単なブラウザクラッシャーを見つけました。

for(var i in alert){}

メソッドなら何でも良いのです。厄介なのは、typeof(alert)で"object"という文字列が返ってくることです。はて。"function"を期待していた私が馬鹿だったのでしょうか。


webmaster@jintrick.net
公開: 2002年12月04日
カテゴリ: Javascript ,ブラウジング