Calendar


Blog Pet
今日のお月様


moon phases
 
selected entries
categories
profile
others

XML宣言

夕べのIE6のトラブルが頭の中でぐるぐるしつつ出社。
IE6環境がないのにどうしよう……。
ええい、IE7を削除してやるー。

IE6環境も整ったところで、チェック開始。
始めてすぐ、ん?おおお。

そのサイトは無理をして(笑)、XHTML 1.0 strict で作っているのですが、まあコーディングする際の規則が色々あるわけです。
で、まず1行目にXML宣言を記述して文字コードを宣言しなくてはいけません。
<?xml version="1.0" encoding="UTF-8"?>
こういうのね。
そのあとに文書型宣言を記述します。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

もちろん私もちゃんと記述しました。

で、チェックしてみたらトップページだけ、XML宣言が抜けていたのです。
そうです、IE6でもちゃんと表示されていたトップページにはなかったのです。
むむむ……コレはどこかで見た覚えがあるぞ……。

「IE6のDOCTYPEスイッチに関するバグ」

XML宣言は
・文字コードがUTF-8であるとき
・文字コードがUTF-16であるとき
・ハイレベルなプロトコルで文字コードが指定されているとき
であれば、省略することが可能です。

ということで、XML宣言を省略することで今回の問題は解決いたしました。
よかったよかった。
でも、XML宣言の記述は強く推奨されているのです。
いくら大きなシェアを占めているからと言って、明らかにバグがあるブラウザに合わせなければいけないというのが、なんとも……。
ホントにIE6は困ったちゃんですよ。

【2008/04/05追記】
肝心のバグについて書いていなかったので、ちょっと付け足しておきます。
 
IE6及び7にはDOCTYPEスイッチに不具合があり、標準準拠モードで解釈されるべきものが、過去互換モードに切り替わってしまうことが確認されています。

IE6の場合、文書型宣言の前に改行や空白文字以外の文字が存在すると過去互換モードに切り替わってしまいます。
IE7ではこれについては改善されていますが、XML宣言内の区切りに半角スペース以外(タブスペースなど)を使うとやはり過去互換モードに切り替わってしまいます。

過去互換モードに切り替わると、左右の margin を auto にしてもセンタリングされなかったり、width で指定したサイズに、padding と border の値が含まれてしまったりするため、レイアウトが崩れてしまうわけです。

まあなんですか、面倒ですね(笑)。

「XML宣言」の評価です。

(クリックしても何も起こりませんが、お声はちゃんと届きます)

Comments

comment form

trackback url

勝手ながらこちらの記事への言及やリンクの
ないトラックバックは自動的に拒否されます

http://www.mahina-lani.com/blog/sb.cgi/1986

trackback



recent comments
resent trackbacks