Fri 04 Apr 2008 23:54
XML宣言
夕べのIE6のトラブルが頭の中でぐるぐるしつつ出社。
IE6環境がないのにどうしよう……。
ええい、IE7を削除してやるー。
IE6環境も整ったところで、チェック開始。
始めてすぐ、ん?おおお。
そのサイトは無理をして(笑)、XHTML 1.0 strict で作っているのですが、まあコーディングする際の規則が色々あるわけです。
で、まず1行目にXML宣言を記述して文字コードを宣言しなくてはいけません。
そのあとに文書型宣言を記述します。
もちろん私もちゃんと記述しました。
で、チェックしてみたらトップページだけ、XML宣言が抜けていたのです。
そうです、IE6でもちゃんと表示されていたトップページにはなかったのです。
むむむ……コレはどこかで見た覚えがあるぞ……。
「IE6のDOCTYPEスイッチに関するバグ」
XML宣言は
・文字コードがUTF-8であるとき
・文字コードがUTF-16であるとき
・ハイレベルなプロトコルで文字コードが指定されているとき
であれば、省略することが可能です。
ということで、XML宣言を省略することで今回の問題は解決いたしました。
よかったよかった。
でも、XML宣言の記述は強く推奨されているのです。
いくら大きなシェアを占めているからと言って、明らかにバグがあるブラウザに合わせなければいけないというのが、なんとも……。
ホントにIE6は困ったちゃんですよ。
【2008/04/05追記】
肝心のバグについて書いていなかったので、ちょっと付け足しておきます。
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 の値が含まれてしまったりするため、レイアウトが崩れてしまうわけです。
まあなんですか、面倒ですね(笑)。
IE6の場合、文書型宣言の前に改行や空白文字以外の文字が存在すると過去互換モードに切り替わってしまいます。
IE7ではこれについては改善されていますが、XML宣言内の区切りに半角スペース以外(タブスペースなど)を使うとやはり過去互換モードに切り替わってしまいます。
過去互換モードに切り替わると、左右の margin を auto にしてもセンタリングされなかったり、width で指定したサイズに、padding と border の値が含まれてしまったりするため、レイアウトが崩れてしまうわけです。
まあなんですか、面倒ですね(笑)。
Comments
comment form