XML-Mediaについてごにょっと(ry
せっかくの週末なのに半分徹夜みたいな感じになってしまったんだけど,以前Javascript関連で元に戻したあの関係(何)(※1)について久々に格闘しておりました.
特に懸案だったのは,以前元に戻す原因となったJavascript(document.write
)の関係だったのですが,DOM関係で色々検索をかけてみたところ空繰再繰 - application/xhtml+xmlなページでdocument.writeを動作させる -という記事を発見しまして,これで障害は殆ど無くなったっぽいので導入することにしてみました.といっても,テストっぽくMT上でのみの変更だったりしますが(^^;
なんでこんなややこしいことをしなければならいのかについては,以前のコンテントネゴシエーションの記事を読んで貰えれば分かるのですが,要するにIEだけはapplication/xhtml+xmlをXML文書として認識しない(※2)というバグ(仕様なのか?)がありまして,結局のところ最新版のIE7(Vistaに搭載)でもこれが直っていないようなのです.直す気がないのならそれはそれでしょうがないのですが,ここで採用しているHTMLはあろう事か(?)XHTML1.1でして,XHTML1.1ではMedia Typeにtext/htmlを使用することを「推奨しない(should not)」となっているのです.
んで,ようやく本題に戻って(苦笑)MTでのMedia Type振り分けを行ってみました.といってもうちの場合はPHPを使っているので比較的楽でして,わざわざコンテントネゴシエーションなんて使わずとも,PHPのスクリプト上でUAを判別して,IEにはtext/htmlを,他のブラウザにはapplication/xhtml+xmlをMedia Typeとして認識させてあげれば良いだけなのでした(※3).Javascriptについても空繰再繰のソースを参考に直したので,アクセス解析も問題なく動いています(実はこっちで時間がかかってしまったのですが(ぉ).
...ただ問題が一つ.何故かfirefoxでだけ最上部に空白が出来てしまってますね.てっきりCSSでの指定で直ると思っていたんだけど全然変わらず...つかなんだこれ(ぉ
- 2007-03-10 17:46追記
firefoxの場合だけ上部分が白くなってしまう理由が判明.やっぱりCSSが原因でした(^^;
今まで,
body
の方にbackground url
を指定していたのですが,body
の基盤となる要素ってhtml
なので,そっちの方にbackground url
を指定してあげないと上部分だけが抜けた感じになるようです(苦笑)ひとまず直しておいたけど,今後は気を付けないといけませんね.application/xhtml+xmlにした途端に,firefoxだけそうなるとは思ってもみませんでしたよ.Operaは問題なかったのになぁ....
- 元の記事については以下を参照.
- 読み込んだHTMLファイルをバイナリファイルとしてダウンロードしようとします.
- この辺の解説はhxxk.jp - Another HTML-lint と text/html と Movable Type -を参照のこと.サンプルソースもあります.