W3C-Document Object Model

W3C-DOMの問題点

W3C準拠という言葉は魅惑的でもありますが、 これが広まれば全てが丸く収まるという程完璧なものではありません。

個人的にW3C-DOMを利用したDHTMLコンテンツを作成する場合に一番の問題になるのは、 画面のサイズやレイアのサイズなどを取得する命令、 またはプロパティが定義されていない事だと考えます。
W3C仕様準拠を謳っているNetscape社も、さすがにこれらの機能を実装しないと問題と考えたのか、 独自にプロパティを定義して実装しています。 もしDOMに対応した新しいブラウザなどが登場した場合、 Netscape6.0と同様のコードが適用出来るのかと言う新たな問題が出てくると思います。

ところで、document.imagesや、

各ブラウザのDHTML仕様

以下のリンクを参考にして下さい。

IE - MSDN online DHTML,HTML & CSS (Microsoft/英語)
IE - DHTML References (Microsoft/英語)
NN6 - W3C DOM Level-1 (W3C/英語)
NN6 - W3C DOM Level-2 (W3C/英語)

対応するブラウザについて - ありとあらゆる環境の人々の為に

現在、Cross Browserな Cross BrowserなDHTMLを作る事において、まず念頭に入れておかなければならない重要な事は、

また、ある場合には正直割り切る事もありかと思います。 IEとNN6の間には、大きなコードの改変も無くコードの記述が出来る場合が多いですが、 それらとNN4の間で互換性を実現しようとした場合、 予想以上にDHTMLの開発に手間取る事があります(NN4のバグも考慮して)。 その場合多少割り切って、NN4の対応を見送るのも選択肢の一つだと思います。 ただしその場合も、NN4で正常にコンテンツが見れるようにする必要性はあるでしょう。
#あくまでも一つの考え方なんで....

フリーライブラリ

クロスブラウザのDHTMLを作成するにあたって、その開発を容易にする為に、 幾つかのサイトにてフリーのライブラリが配布されています。
JavaScriptサンプル集でお馴染みの 高橋氏 の提供するDynamicHTMLcross-browser/Examplesの "Free Functions"などがその主な代表です。 氏以外にも色々な方が製作・配布なされているので Linksなどから辿ってみてください。
このようなライブラリを利用する事により、汎用的なコード記述の手間が大幅に省けます。

tips - スクリプト分岐

互換性のあるDHTMLを実現するにあたって、 スクリプトの中で、ブラウザごとに分岐する必要性が出てきます。 その際各ブラウザの判別は以下の様に行います。

var isIE = document.all; //IEの判別
var isNN4= document.layers; //Netscape4の判別
var isV5 = document.getElementById; //Netscape6以降、IE5.0以降の判別

スクリプトの中で上記の様に定義すると各変数にboolean値が入ります。 例えば、IE4.0で実行した場合は isIE4 のみが true を返し(その他の変数は false を返します。)、 IE5.0で実行した場合は、isIE と isV5 に true が入ります。 この変数を利用して以下の様にスクリプトの分岐を行います。

if(isIE) {
  //IE4.0以上の時の処理
}
else if(isNN4) {
  //NN4.xの時の処理
}
else if(isV5) {
  //NN6以降の時の処理
}

さらに条件を複雑にするなら以下の様にするといいでしょう。

var isIE4= document.all && !document.getElementById;//IE4の判別
var isIE5= document.all && document.getElementById; //IE5以降の判別
var isDOM= document.implementation; //DOM対応ブラウザ。Netscape6以降など

tips - 機能対応表

機能による簡易対応表です。主な機能別にわけてあります。