hasLayout
Internet Explorer の Web サイトで作業している多くの開発者と同様に、悪名高いフラグが原因である多くのバグに遭遇したようです。
このフラグが何をするのか、どのように機能するのか (ほとんどの場合) を理解しています。先日読んだ良い説明 (ソースは見つかりませんが) はhasLayout
、IE では基本的に「この要素を四角形にする」という意味です。
それは明らかにそれよりも複雑ですが、それでかなりうまく要約されています (私の意見では)。
私が理解できないのは、ブラウザがこのフラグを使用する理由です。答えを探していたところ、論理的に聞こえるものを見つけました。
Internet Explorer は、CSS が本格的に普及する前の非常に古いレガシ コードを処理する必要がありました。ブラウザに CSS を簡単に追加できるようにするためのアーキテクチャ上の決定として、
hasLayout
フラグを使用して特定の CSS プロパティをトリガーし、ページが正しくレンダリングされるようにしました。これは IE4 の頃にさかのぼります。
これは、Firefox (当時は Netscape) が同じ問題に対処しなければならないことに気付くまで、私にはほとんど意味がありました。Netscape は Internet Explorer とほぼ同じくらい長い間存在していますがhasLayout
、私の知る限り、内部フラグなどは必要ありません。
このhasLayout
フラグが Internet Explorer の非常に多くのバグの原因であることを考えると、なぜ IE にこのフラグがあり、他のブラウザはそれを必要としないのか知っている人はいますか?
これは純粋に好奇心から知りたいことです。もし誰かが理論を持っているか、たまたま答えを知っているなら. このフラグが役立つ理由 (またはそうでない理由) について詳しく知りたいです。