Firefox web browser - Faster, more secure & customizable

Mozilla Foundation, JavaScript Evangelist, John Resig氏は10日(米国時間)、氏のブログElement Traversal APIにおいて開発中のFirefox 3.1にElement Traversal Specificationの実装が取り込まれたことを伝えている。Element Traversal SpecificationはW3Cにおいて策定が進められている仕様で、DOMの操作としてElementだけを対象とした機能を提供するものだ。提供される属性はfirstElementChild、lastElementChild、previousElementSibling、nextElementSibling、childElementCountの5つ。

従来のDOMではElementだけではなく全てのノードを対象として処理がおこなわれる。このため、空白改行やコメントといった要素までアクセスパスに含まれることになり、本来の処理をおこなうのに煩雑な判定文が必要だった。Element Traversal SpecificationはElementだけを対象とするインタフェースで、これまで煩雑だったプログラミングを軽減される効果があるとみられている。

Node対象とElement対象の比較 - John Resig, Element Traversal APIより抜粋

John Resig氏の指摘はここから先が興味深い。氏は従来の属性とElement Traversal Specificationで導入される属性を比較して、Element Traversal Specificationには「.childNodes」に該当する「.childElements」ともいうべき属性が含まれていないことを指摘し疑問を呈している。

氏はIE、Opera、Safariにはすでに「.childElements」を実現できる包括的な属性として「.children」が実装されていることを紹介し、試しに「.children」を使った実装を活用することで特定の処理で高速化を実現できた旨を明らかにしている。Firefox 3.1でも最終的に「.children」は導入される見通しであるため、実質的には「.childElements」に相当する実装がすべての主要ブラウザに実装されることになる。

W3Cで仕様として既定されるか不透明であるため「.children」を使ってJavaScriptプログラミングを実施すべきかどうかは考慮する必要があるが、実装を簡潔にしたうえに実行速度の向上が期待できるというのは魅力的だ。仕様の策定と主要ブラウザの今後の実装情況に注目しておきたい。