Jintrick.netagenda2005年10月アーカイブ → 2005年10月21日

createDocumentに関して

そしてcreateElementするDocumentがHTMLDocumentでなくても、XHTML名前空間をもつ要素は全てHTMLElementのインスタンスとして生成される、みたい。window.documentとは縁もゆかりもないDOMParser由来のDocumentを生成して、展開名"http://www.w3.org/1999/xhtml" + "a" の要素をcreateElementNSしてみたところ、HTMLAnchorElementのインスタンスだった。もちろんFirefox前提で、仕様にはこの辺りの挙動について何も書かれていない。と思う。

var doc = (new DOMParser).parseFromString("<doc/>", "application/xml");
var elmA = doc.createElementNS("http://www.w3.org/1999/xhtml", "a");
alert(elmA instanceof HTMLAnchorElement); // true

XHTMLの名前空間を持っているということが、HTMLElementとして認識される鍵となっているようだけれども、それってどうなんだろう。DOM HTMLには「レガシー」なアトリビュートが沢山あるし、application/xhtml+xmlな文書でDOM HTMLを使っちゃいかんというか、少なくとも動作の保障はされない筈。昨日も書いたけれども、DOM HTMLはレガシーHTMLの為のインターフェイスなんだし。

……気にしない気にしない。

因みにElement、HTMLElement、HTMLAnchorElementという階層。HTMLElementはhtml要素を抽象化するものではないのがややこしいので一応。


webmaster@jintrick.net
公開: 2005年10月21日
カテゴリ: DOM