application/xhtml+xmlなページでdocument.writeを動作させる
document.write
及びdocument.writeln
を、Firefox、Opera等で完全なDOM仕様にしました。
document.write
やdocument.writeln
を使ったJavascriptを、MIME-Typeがapplication/xhtml+xmlなページで動作させることができる夢のようなスクリプトが出来上がりました。
ダウンロード : document.write.js
ライセンスはMIT-Licenseです。
とりあえず、WindowsXP上の
- Firefox 2.0
- Opera 8.53 (古!)
で動作することを確認しました。
たぶんですが、
- Safari
- Internet Explorer 7
でも動くかもしれません。
使い方は、document.write
(document.writeln
)が使われる前に、上記のスクリプトを読み込み、すべてのdocument.write
(document.writeln
)が使用された後に
document.write.run();
を呼び出せばいいです。
ちなみにテストが不十分なので条件によってはうまく動かないかもしれません。
実例がないのはアレなので、サンプルを作りました。
document.writeをappliation/xhtml+xmlで動作させるサンプル
appliation/xhtml+xmlをサポートしているブラウザでなら見れます。IE6とかだと、多分ダウンロードになります。
手ごろなスクリプトがtrackfeedしか無かったので、それしか使ってませんが、MIME-Typeがappliation/xhtml+xmlなページできちんと動作しています。
あと若干上のスクリプトを修正しています。
以下作りあげるまでの経緯。
JavascriptのXML Parser(HTML Parser)探していたところ、XML.ObjTreeというのを発見した。
んでコード見てみると、ブラウザの独自拡張使ってXMLをパースしていて、「これならいける」と思い、試しにやってみたところtext2dom
が実装できたので、完成した、という感じ。
ブラウザによって動かないのは独自拡張使ってるせいで、XMLのパースはXML.ObjTreeとあんまり変わりないので、多分XML.ObjTreeが動くブラウザであれば、今回のスクリプトも動く。
IE6で動かなかったりするんだけど、そもそもIE6ではMIME-Typeがapplication/xhtml+xmlだと表示できなかったはずなので、特には問題にはならないはず。
ただ、そのまま使うには、問題があったりなかったりするので、各自工夫して使ってください。
- 同じトピックのエントリを見る
-
- Writebacks :
- No Comment
- No TrackBack