April 19, 2005

PHP化でIEから閲覧が

現在、月ごとのページ(monthly Archive)とカテゴリ別のページがIEから読めません。
なぜ読めないのかも分かりません。
Another HTML-Lintでも他のページと同じように99点と出るので
恐らくはIE独自のバグによるものだと思うのですが
どこがどういったわけでこの二箇所だけ閲覧できないのかが全く分かりません。
モジュール化されているので中身自体はひたすらにincludeされていて
include先が少し違うという以外には本質的な違いがほとんどないので……。
マジョリティであるIEを切り捨てるということもまたサイト作成者としては現実味のない選択なのですが。
如何ともし難いです。

-----------------------------------[追加]-----------------------------------------
だいぶ前に解決していましたが書き直すのを忘れていました。
原因はIEの互換モード特有のバグだったようです。
PHPによってuser agentごとの動作を変え、
IE上では標準準拠モードで動作するように書き換えています。

具体的にはIEには以下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="http://samourai.s41.xrea.com/mt/styles-site.css" type="text/css" />
(Content-Typeはtext/htmlで出力)

それ以外には
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://samourai.s41.xrea.com/mt/styles-site.css" type="text/css"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
(Content-Typeもtext/htmlではなくapplication/xhtml+xmlで出力し、meta http-equivには書かない)

これを吐くようなファイルをincludeしています。
ちなみに<head>で止まっているのは<title>がスタティック(URLによらず一意)でないためです。
周知のとおりXHTMLでは後者が正しい記述ですが
IEの勝手仕様により後者は正しく解釈されません。
それどころか表示すらされなくなったということだったようです。

Posted by Samourai | Comments(0) | TrackBack (0)