All your <base> are belong to us
初回投稿日時: 2005年09月02日03時43分12秒
カテゴリ: HTML IE
SNS:
Tweet (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と同じコードを使わなくては同じになどなろうはずがない。