Textノードを追加できない
IE6
Microsoft.XMLHTTP
オブジェクトを作って、responseXML
で XML のオブジェクトを取得し、getElementsByTagName
で適当な要素を拾って、その Text ノードを getChildNodes
でとってくる。
これを、実行中の HTML の要素に appendChild
しようとすると、「インターフェースがサポートされていません」というエラーで止まる。
んー…。
ちょっと考えて、これだとノードの移動になるからだめなのかと思って、 cloneNode
してみたけど、やっぱりだめ。
Firefox だとうまくいくのになぜー?
しょうがないから、一度 nodeValue
で文字列取り出して、createTextNode
で再作成という二度手間…。
原因と解決策
異なるドキュメント間のノードの移動・コピーは appendChild
や cloneNode
などではできない仕様らしい。 Firefox 2.x ではエラーは出ないが、 Firefox 3.x では Node cannot be used in a document other than the one in which it was created とエラーが出るようになっている。
で、一方のドキュメントから他方に移動する adoptNode
(DOM3 Core) とコピーする importNode
(DOM2 Core) を使えばいい。
Firefox 2 でも実装されているのでうまくいく。 IE6 だとどちらにせよ動かない。やはり、文字列のコピーをするほうがいいか。