
[1]
[CODE(DOMi)@en[[[DocumentFragment]]]] [[節点]]の
[CODE(DOMm)@en[[[appendChild]]]], [CODE(DOMm)@en[[[insertBefore]]]],
[CODE(DOMm)@en[[[replaceChild]]]] [[メソッド]]の第1引数に自分自身を指定した場合のテスト
<IW:SuikaCVS:"www/test/dom/document-fragment/">

[2]
[[Firefox]] 1.5, [[Opera]] 9 TP1 ではいずれも 
[CODE(DOM)@en[[[HIERARCHY_REQUEST_ERR]]]]。

[[WinIE]] 6 ([[Windows XP]] [[SP2]]) ではいずれも成功。
[CODE(DOMm)@en[[[appendChild]]]] と [CODE(DOMm)@en[[[insertBefore]]]]
では実行前と変化なしで、 [CODE(DOMm)@en[[[replaceChild]]]]
は第2引数に指定した[[節点]]が消失。

仕様書が曖昧なので、どちらも悪くはない動作だと思いますが。。。

[3]
[CODE(DOMa)@en[[[appendChild]]]] や [CODE(DOMa)@en[[[insertChild]]]]
で [CODE(DOMi)@en[[[Attr]]]] に [CODE(DOMi)@en[[[Node]]]]
を追加しようとすると、 [CODE(DOMa)@en[[[nodeType]]]] に関わらず、
- [[Firefox]] 1.5 は [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]] を投げます。
- [[Opera]] 9 は [CODE(DOMc)@en[[[HIERARCHY_REQUEST_ERR]]]] を投げます。
- [[WinIE]] 6 は[[例外]]を投げませんが、何も起こりません。

([[名無しさん]])

[4]
[[Opera]] 9 は [CODE(DOMi)@en[[[DocumentType]]]]
を [CODE(DOMm)@en[[[appendChild]]]] や [CODE(DOMm)@en[[[insertBefore]]]] で追加できません
([CODE(DOMm)@en[[[createDocument]]]] ならおk)。
([[名無しさん]])

[5]
[[Firefox]] 1.5 は [CODE(DOMi)@en[[[DocumentType]]]]
を [CODE(DOMi)@en[[[Document]]]] に追加できますが、
別の [CODE(DOMi)@en[[[DocumentType]]]] や
[CODE(DOMi)@en[[[Element]]]] の[[弟]]とすることはできません。

([[名無しさん]])

[6]
>>5 [CODE(DOMm)@en[[[insertBefore]]]] で
[CODE(DOMi)@en[[[Element]]]] の[[兄]]とすることもできません。
([[名無しさん]])

[7]
>>5 他の[[文書]]で使われている [CODE(DOMi)@en[[[DocumentType]]]] でも、勝手に [CODE(DOMm)@en[[[adoptNode]]]] されるようです。
([[名無しさん]])

[8]
[[Opera]] 9 は [CODE(DOMi)@en[[[Document]]]] に
[CODE(DOMi)@en[[[Text]]]] や [CODE(DOMi)@en[[[CDATASection]]]]
を追加できます。
また、既に [CODE(DOMi)@en[[[Element]]]]
があっても更に [CODE(DOMi)@en[[[Element]]]]
を追加できます。
([[名無しさん]])

[9]
>>5 また、 [CODE(DOMi)@en[[[DocumentType]]]]
を [CODE(DOMi)@en[[[Element]]]] の前に [CODE(DOMm)@en[[[insertBefore]]]] で追加することもできません
([CODE(DOMc)@en[[[HIRARCHY_REQUEST_ERR]]]])。
([[名無しさん]])

[10]
>>5 [CODE(DOMi)@en[[[Element]]]] を [CODE(DOMi)@en[[[DocumentType]]]] の[[兄]]とすることはできません
([CODE(DOMc)@en[[[HIERARCHY_REQUEST_ERR]]]])。
([[名無しさん]])

[11]
[[Opera]] は [CODE(DOMm)@en[[[insertBefore]]]]
の [CODE(DOMp)@en[[[refChild]]]] に [CODE(DOMi)@en[[[DocumentType]]]]
を追加することができません
([CODE(DOMc)@en[[[NOT_FOUND_ERR]]]])。
([[名無しさん]])

[12]
>>11
ちなみに、 [CODE(DOMi)@en[[[DocumentType]]]]
が最初の[[子節点]]でなければならないということでもないみたいです
([[文書型宣言]]の前に[[注釈宣言]]があればそれが最初の[[子節点]]になります。その状態で [CODE(DOMi)@en[[[DocumentType]]]] を [CODE(DOMp)@en[[[refChild]]]] に指定して [CODE(DOMm)@en[[[insertBefore]]]] してもやっぱりうまくいきません)。
([[名無しさん]])

[13]
>>11
ちなみに、 [CODE(DOMi)@en[[[DocumentType]]]]
が最初の[[子節点]]でなければならないということでもないみたいです
([[文書型宣言]]の前に[[注釈宣言]]があればそれが最初の[[子節点]]になります。その状態で [CODE(DOMi)@en[[[DocumentType]]]] を [CODE(DOMp)@en[[[refChild]]]] に指定して [CODE(DOMm)@en[[[insertBefore]]]] してもやっぱりうまくいきません)。
([[名無しさん]])

[14]
[[DOM水準2]]の[[正誤表]]と[[DOM水準3]]によれば、
[CODE(DOMp)@en[[[newChild]]]] の [CODE(DOMa)@en[[[parentNode]]]]
が[[読取専用]]なら [CODE(DOMc)@en[[[NO_MODIFICATION_ALLOWED_ERR]]]] となります。
([[名無しさん]])

[15]
[CODE(DOMi)@en[[[DocumentFragment]]]] を
[CODE(DOMp)@en[[[newChild]]]] としたとき何が返されるのかよくわかりません。
([[名無しさん]])

[16]
[CODE(DOMa)@en[[[ownerDocument]]]] が
[CODE(IDL)@en[[[nullll]]]]
の [CODE(DOMi)@en[[[DocumentType]]]]
を [CODE(DOMp)@en[[[newChild]]]] としたときどうなるのかよくわかりません。
([[名無しさん]])

[17]
[[DOM水準3]]によると [CODE(DOMi)@en[[[Document]]]]
に2つ目の [CODE(DOMi)@en[[[DocumentType]]]] や
[CODE(DOMi)@en[[[Element]]]] を [CODE(DOMm)@en[[[appendChild]]]]
しようとするのは [CODE(DOMc)@en[[[HIERARCHY_REQUEST_ERR]]]] です。
([[名無しさん]])

[18]
[[DOM水準2]][[正誤表]]と[[DOM水準3]]によると自分に自分を
[CODE(DOMm)@en[[[appendChild]]]] しようとしたら
[CODE(DOMc)@en[[[HIERARCHY_REQUEST_ERR]]]] です。
([[名無しさん]])


[19]
>>15 [[Firefox]] 1.5、[[Opera]] 9 TP1、
[[WinIE 6]] ([[Windows XP]] [[SP2]]) では
[CODE(DOMi)@en[[[DocumentFragment]]]]
が返されるようです。
([[名無しさん]])



[20] [CITE[''''''[''''''whatwg'''''']'''''' Stat. on frequency of node insertion without children]]
( ([TIME[2011-12-03 17:30:53 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-December/034038.html>

[21] [CITE@en[Add ''''''[''''''CEReactions'''''']'''''' annotations to mutating methods · whatwg/dom@3cd02d1]]
([TIME[2016-04-26 19:07:21 +09:00]] 版)
<https://github.com/whatwg/dom/commit/3cd02d139c159a31fbb400e03932652c72fc7812>