我在度假时无法访问我的好朋友 Internet Explorer,我拼凑了一个非常完整的网络应用程序。当我回到家时,看到我的网站在 IE 中运行,我感到非常惊讶和鼓舞……直到我输入了任何有效的文档类型。我知道将浏览器置于怪癖模式不是最佳做法,或者它不会被称为怪癖模式,但我想我的问题是......拥有“怪癖模式”网站的实际后果是什么?是否有必要甚至值得煞费苦心地去纠正我还不知道的问题,或者我可以让它保持原样,跨浏览器运行吗?谢谢。
4 回答
如果您的网站在标准模式下呈现错误,但在怪癖模式下正确,则很可能是错误的。一些当前的浏览器即使在标准模式下也可以修复你的错误,但你不知道未来的浏览器会用它做什么。使用标准模式,您可以绝对确定在现代浏览器中看起来不错的有效站点将正确显示。
与quirks 模式相比,no-quirks 模式下的浏览器具有更好的互操作性,即彼此具有相同的行为。no-quirks 模式是大多数 Web 标准人员和浏览器开发人员关心、考虑和测试的模式。因此,您更有可能在 quirks 模式下遇到浏览器之间的差异。
例如,在 quirks 模式下,body
在 WebKit/Blink 中填充视口,但在 Gecko 中没有(我不确定 Edge)。在 no-quirks 模式下,body
高度在所有浏览器中的工作方式相同。
(不过,有一个反例,浏览器在 quirks 模式下同意但在 no-quirks 模式下不同意:body
作为“视口滚动元素”scrollTop
等)
某些版本的 IE(8 和 9?)故意在其怪异模式(例如canvas
元素)中具有较少的功能。因此,如果您关心 IE 并希望能够使用 IE 实际支持的功能,而不是在 quirks 模式下,那么这将是不使用 quirks 模式的另一个原因。
最后,也许很明显,你可能会遇到更“奇怪”的行为,那就是怪癖本身,比如color
和其他一些没有继承到table
元素中的东西,顶部和底部边距折叠得更多,ID 和类不区分大小写,等等。
W3 的 HTML 验证在技术上需要声明一个正确的文档类型;然而,很多人让他们的代码没有文档化,以便浏览器使用 Quirks 模式。我已经这样做了很多次,通常效果很好;但是,您冒着浏览器无法正确解释您的代码的风险。
换句话说,您所说的跨浏览器功能很容易在没有有效文档类型声明的情况下分解为跨浏览器地狱。
Aka,这取决于您的网站需要有多强大。
怪癖模式通常是浏览器尝试修复您的错误以正确呈现,但重要的是要记住,如果您的网站以符合标准的模式呈现,它可能会在未来的浏览器中呈现正常(至少暂时如此)。