document.writeを完全な DOM 対応にするためのメモ。
IT 戦記 の id:amachang さんのエントリ、 とてもシンプルに自分自身が属する script 要素を取得 で、自分自身が属する script 要素が取得する方法が分かった。
最速インターフェース研究会 の mala さんのエントリ ページレンダリングを妨げない document.write の実装 で
document.writeをピンポイントで書き換えて、遅延描画させる方法が分かった。
で、あとはテキストから DOM を構築する方法が分かれば、document.writeを元々の動作を失わせること無く、DOM に完全対応させることができる。
スクリプトの処理の流れをまとめると、
- スクリプト自体が属する script 要素を取得
document.writeを書き換え、そのスクリプトのdocument.writeで書き出される HTML テキストを取得- HTML テキストから DOM を構築する
- スクリプト要素が切り替わる、もしくはすべての
document.writeが実行され終わった後に生成した DOM ノードを追加する
という感じ。
以上のような感じで、document.write(もしくはdocument.writeln)を書き換えると、MIME-Typeがapplication/xhtml+xmlなページでdocument.writeが使えるようになる。(XHTML2 でも多分使える?)
と思うんだけど、僕だと書けそうにない。
Text2DOM はすでにあったりするような気がするんだけど、どうも他のライブラリ群のなかのひとつみたいだったので、そのまま使うのはちょっと問題があったようななかったような。
まあでも、application/xhtml+xmlなページでdocument.writeが使えるようになるという夢のようなスクリプトまで、あとちょっとなので、誰かやってくれないかなぁ。
追記:2006-12-07T16:20:00+09:00
とりあえず他人任せはアレなので途中まで書いた。
が、肝心のテキストから DOM を生成する部分ができてないので、動きません(ちなみにテストもしてない)。どこかにないかなぁ。
コードはパブリック・ドメインなので、改造は自由です。といいつつも、コードが微妙なので、あんまり参考にはならないかも。