document.writeハックに関するメモ
読了まで:約2分
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
とりあえず他人任せはアレなので途中まで書いた。
- [[-* writer.js]]
が、肝心のテキストから DOM を生成する部分ができてないので、動きません(ちなみにテストもしてない)。どこかにないかなぁ。
コードはパブリック・ドメインなので、改造は自由です。といいつつも、コードが微妙なので、あんまり参考にはならないかも。