Nightingale Addonでxhr.responseTextを使用したDOMを作成する場合の注意点


昨日の投稿でDOM操作できないことを嘆いていたのですが、その解決方法がわかりました。

なお、この症状はaddon上でのみ起きます。それへの対処です。

一般的にXHRのresponseTextをDOMへ変換するときは

var dom = document.createElement(“div”);
dom.innerHTML = xhr.responseText;

のようにやるかと思います。

しかしNightingaleやFirefoxのaddon上でこれをやるとXULなオブジェクトになってしまい、ただしくDOMを扱えなくなります(自分なりの仮説)

そのため正しくHTMLDocumentを作ってやれば良いのです。

以下の関数がそれを行うためのものです。

これによってaddon上でもただしく快適にDOMを扱えるようになります!

※このコードはNightingaleとFirefox3.6.x以前のブラウザでのみ動作保証します。それ以降のFirefoxは素直に document.implementation.createHTMLDocument を使いましょう

参考: