IE6.0で大分変わった。
標準モードと互換モード
ブラウザは以下のモードで動くらしい。
- 標準(準拠)モード
- 互換モード
- 準標準モード
標準モードではW3Cの標準仕様にあわせた表示モードで処理される。しかし、互換モードはその名のとおり、昔のブラウザでもOKなように処理される。
以上を踏まえると、標準モードでいいじゃない!と思うのだが、標準モードになるかその他になるのかは、以下の内容でブラウザが判定するらしい。
HTMLファイルの先頭行にDOCTYPE宣言があるなら標準モード
というわけで、DOCTYPE宣言をちゃんとすれば大丈夫に感じるのだが、XHTMLは先頭にXML宣言を書かなければならない。(だってXMLだ
もん)となると、XHTMLだと互換モードに強制的になってしまう。IE6.0はXHTMLにやさしくないブラウザだったのだ。
この他にも問題はある。標準モードと互換モードではJavascriptの書き方が異なってくる。たとえば、
document.body.scrollTopなどが問題なのだ。標準モードだとdocument.body.scrollTopではアクセスでず、
document.documentElement.scrollTopとしなければならない。
if(document.compatMode == "CSS1Compat"){
// 標準モード(CSS1Compat)
var scroll = document.documentElement.scrollTop;
}else{
// 互換モード(BackConpat)
var scroll = document.body.scrollTop;
}