この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2005年9月)

2005年9月2日

All your <base> are belong to us
初回投稿日時: 2005年09月02日03時43分12秒
カテゴリ: HTML IE
SNS: (list)

IEのめちゃくちゃな処理方法が告白されている。

この話によると、IE6まででは、base要素が出現すると、空要素にも関わらず(しかもhead要素内にしか出現できないにも関わらず)、それを開始タグとして、終了タグを"適切に"補完し、そのbase要素の影響すべきリンク全体がbase要素の子孫要素となるようにし、リンクは、自分に最も近い祖先のbase要素を参照していたというのだ。(base要素がhead要素内にあった場合は、body要素の親をbase要素とするらしい。詳しくはCode-Only: BASE tag changes in IE 7 with Examplesを参照。)

こんなことは普通の人なら思いつかない。base要素の処理における使用頻度を考えると、こんな複雑で、奇怪なことをしなくても各documentオブジェクトにbase要素の情報を持たせれば簡単で、高速な処理ができるではないか。(base要素はhead要素内でも一度しか出現が許されていない、つまり複数のbase要素を処理する義理など何処にもない。)

こんな非常識なことをおそらく、様々な処理で行っているのだろう。IEのバグには不可解で、原因を推測できないものも多い。W3Cの仕様などより、IEの仕様に他のブラウザが仕様を合わせるべきだと主張することがいかに荒唐無稽なことであるか分かるというものだ。IEの仕様にあわせるには、IEと同じ処理、ひいてはIEと同じコードを使わなくては同じになどなろうはずがない。

関連するかもしれないエントリ

関連するかもしれないエントリを発見できませんでしたが、無いとは限りません。