Как и многие разработчики, работающие на веб-сайтах для Internet Explorer, я, кажется, сталкиваюсь с множеством ошибок, вызванных пресловутым hasLayout
flag.
Я понимаю, что делает этот флаг и как он работает (по большей части). Хорошее объяснение, которое я прочитал на днях (хотя я не могу найти источник), заключается в том, что hasLayout
в IE по существу означает "Сделать этот элемент прямоугольником".
Это, очевидно, более сложное, чем это, но это довольно хорошо подведено (на мой взгляд).
Я не понимаю, почему браузер использует этот флаг. Когда я искал ответ, я нашел тот, который звучал логично:
Internet Explorer должен был иметь дело с очень старым устаревшим кодом, прежде чем CSS действительно был в самом разгаре. В качестве архитектурного решения, позволяющего браузеру легко добавлять CSS к нему, флаг
hasLayout
использовался для запуска определенных свойств CSS, чтобы страница отображалась правильно. Это относится ко времени IE4.
Это почти имело смысл для меня, пока я не понял, что Firefox (Netscape в то время) имел дело с той же проблемой. Netscape существует примерно столько же, сколько Internet Explorer, однако для него не требуется никакого внутреннего флага hasLayout
или чего-либо подобного, насколько я знаю.
Как показано, как флаг hasLayout
является источником стольких ошибок в Internet Explorer, знает ли кто-нибудь, почему IE имеет этот флаг, а другие браузеры ему не нужны?
Это то, что я хотел бы знать исключительно из любопытства, если у кого-то есть какие-то теории или он знает ответ. Я хотел бы узнать больше о том, почему (или почему нет) этот флаг полезен.