質問: HTMLとJavaScriptで作ったソースを IE4.0 NN4.0 で見られるページを作りたいと思ってます。 開発をIE5.0で見れるように行ったために、 特にNNで動作しない個所が多発しています。 (1) IE5.0では動くが4.0では動かない。 (2) IE5.0では動くがNN では動かない。 といったものをご存知の方、教えて頂きたいのですが。 また、そのようなときに参照できるものも 教えて頂けたらうれしいです。 よろしくお願いします。
回答: そうですね、このあたり、いろいろ悩むところですね。 まず、現在大きく以下のD.O.M.(文法規則とでも思っておいてください)分類といわれるものが存在します。 それは、 (1)IE4.x系のDOM (2)IE5.x系のDOM (ただし、IE5.x系はIE4.0系のDOMをほぼ全て利用可能) (3)NN4.x系のDOM (4)NN6.x系のDOM (MOZIILAのM17・M18あたりとほぼ等しい) ■HTMLの側面から見たとき、ここから ---------------------------- (1)と(2)はほとんどの場合、問題は起きないし、表示面での違いもあまり発生しないはずです。 (1)と(3)については、フォントの大きさからして違い、いろいろと問題も発生するでしょう。特に(3)は何もないテーブルやレイヤーの背景に色がつかない、とかいったことを中心として、「癖」が強いと言えます。ひとつひとつパッチを当てるような気持ちで直して行く根気が必要です。(かなり慣れてくると、はじめからNNでもほぼIEと等しくきっちり表示できるものが一発で書けるようになります。(1)を機軸にすえて、(3)の癖を(机上や本ではなく実体験として)じっくりと覚えて行く必要があります。 (2)と(4)については、(1)と(3)の圧倒的な違いに比べれば、かなり歩み寄った形となっています。(3)よりも(4)への対応の方がずいぶんと楽だと思います。 ---------------------------- ■HTMLの側面から見たとき、ここまで ■JAVASCRIPTの側面から見たとき、ここから ---------------------------- JAVASCRIPTという側面からみると、(1)(2)(3)(4)は非常にややこしい関係になっています。 ★(1)と(3)のDOMはぜんぜん違います。これは「document.all」型と「document.layers」型といっても良いでしょう。このあたりのことは、JAVASCRIPT系の「クロスうんちゃら」と書かれた本に載っていると思います。 ★(1)と(2)のDOMもぜんぜん違います。しかし、(2)は(2)自身のDOMに加え、(1)のDOMも動かせます。 ★(2)と(4)は本来はほとんど同じです「document.getElementById」型といっても良いでしょう。ですから、IE5.xのDOMで書かれたものは、本来は(4)で動くのです(微妙なところでまだ違いがありますが)。実際動くことの方が圧倒的に多いはずです。 しかし、実際には「IE5.xで動くのにNN6.x」では動かないという報告の方が圧倒的に多いです。なぜでしょう。それは上で述べたように(2)は(1)のDOMを動かせますが、(4)は(1)のDOMもそして(3)のDOMも動かせません。(4)はブラウザの名前とはうらはらに(3)よりも(2)にかなり近いDOMを持っているのです。 「NN6になってJAVASCRIPTが動かなくなった」といっているのは、なんのことはなく、ちゃんとふさわしいDOMで書いていない人がわめいているだけです。 以上から、おおよそ、(1)のDOM、(2)と(4)の共通DOM、(3)のDOMの大きく3つに分類され、(2)と(4)は僅かな違いだけ分類する、というのが現在の常套手段です。 本屋の書店に並んでいる「2分類」というのは、とっくに時代後れであり、今や実践力を失いつつあるといえるでしょう。 なお、時代は(2)と(4)のDOM系へ統一されていっています。ですから、やがてはDOM分類の話自体が過去の遺物となるでしょう。 ---------------------------- ■JAVASCRIPTの側面から見たとき、ここまで どうでしょう。参考になりましたでしょうか?