document.documentElement or document.body
サンプルで作ったJavaScriptのクラスを、本番で試そうと思ったらうまく行かなかった。色々調べてみると、scrollTopの取得がサンプルではdocument.documentElementで取れていたのに、本番ではdocument.bodyでしか取れない。勿論同じブラウザ(IE6.0とFx1.5.0.4)で動かしている。
わけわからーん、と思っていたけど、HTMLの一番上にDOCTYPEの記述の有無で振る舞いが違うらしい。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
と書いておくとdocument.documentElementのscrollTopが有効でbodyの方はダメ。書かないと逆になる。
そういう仕様なんだろうなーと思って調べたらCSSのモードがあるのね・・・。知らなかったっす。
一般にHTMLの冒頭に以下のような宣言を加えるとスタイルシートが 標準モードになります。
他にも同工異曲の宣言が幾つもあり混乱します。。。
IE6では標準モードの場合、 「document.body」の属性取得で不適切な値が返されることがあります。
んでこれで判断するの?
document.compatMode=="CSS1Compat"
全部DOCTYPEを書いておいた方が楽な気がする。