像许多为 Internet Explorer 开发网站的开发人员一样,我似乎遇到了很多由臭名昭著的hasLayout
标志引起的错误。
我了解这个标志的作用以及它是如何工作的(大部分情况下)。我前几天读到的一个很好的解释(虽然我找不到源代码)是hasLayout
在 IE 中基本上意味着“使这个元素成为一个矩形”。
它显然比这更复杂,但总结得很好(在我看来)。
我不明白为什么浏览器使用这个标志。在寻找答案时,我发现了一个听起来合乎逻辑的答案:
在 CSS 真正全面展开之前,Internet Explorer 不得不处理非常古老的遗留代码。作为使浏览器易于添加 CSS 的架构决策,该
hasLayout
标志用于触发某些 CSS 属性,以便正确呈现页面。这可以追溯到大约 IE4 的时代。
这对我来说几乎是有道理的,直到我意识到 Firefox(当时的 Netscape)必须处理同样的问题。hasLayout
Netscape 几乎与 Internet Explorer 一样长,但据我所知,它不需要任何内部标志或类似的东西。
既然hasLayout
标志是 Internet Explorer 中如此多错误的根源,有谁知道为什么 IE 有这个标志而其他浏览器不需要它?
如果有人有任何理论或碰巧知道答案,我纯粹出于好奇而想知道这一点。我想更多地了解为什么(或为什么不)这个标志是有用的。