我正在度假,无法访问我的好朋友 Internet Explorer,所以我拼凑了一个相当完整的网络应用程序。当我回到家时,我惊讶又鼓舞地发现我的网站可以在 IE 中运行......直到我输入任何有效的文档类型。我知道将浏览器置于怪异模式不是最佳实践,或者它不会被称为怪异模式,但我想我的问题是......拥有“怪异模式”网站的实际影响是什么?是否有必要甚至值得煞费苦心地纠正我尚未意识到的问题,或者我可以保持原样,跨浏览器运行吗?谢谢。
如果您的网站在标准模式下呈现错误,但在怪异模式下呈现正确,则很可能是错误的。即使在标准模式下,当前的某些浏览器也可能会修复您的错误,但您不知道未来的浏览器会用它做什么。使用标准模式,您可以绝对确定在现代浏览器中看起来不错的有效网站将正确显示。
与怪异模式相比,在无怪癖模式下,浏览器的互操作性更强,即彼此具有相同的行为。无怪癖模式是大多数 Web 标准人员和浏览器开发人员关心、考虑和测试的模式。因此,您更有可能在怪异模式下遇到浏览器之间的差异。
例如,在怪异模式下,
body
在 WebKit/Blink 中填充视口,但在 Gecko 中则不会(我不确定 Edge 是否如此)。在无怪癖模式下,body
高度在所有浏览器中都相同。
(不过,有一个反例,浏览器在怪癖模式下同意,但在无怪癖模式下不同意:
body
是scrollTop
等的“视口滚动元素”)
某些版本的 IE(8 和 9?)故意在其怪异模式中减少功能(例如
canvas
元素)。因此,如果您关心 IE 并且希望能够使用 IE 实际支持的功能,而不是在怪异模式下,那么这将是不使用怪异模式的另一个原因。
最后,也许很明显,您可能会遇到更多“奇怪”的行为,即怪癖本身,例如
color
和其他一些未继承到 table
元素的东西,顶部和底部边距折叠更多,ID以及类不区分大小写,等等。
从技术上来说,W3 验证 HTML 需要声明正确的文档类型;然而,很多人将他们的代码保留为未文档类型,以便浏览器使用 Quirks 模式。我已经这样做过很多次了,通常效果很好;但是,您面临浏览器无法正确解释代码的风险。
换句话说,如果没有有效的文档类型声明,您所说的跨浏览器功能很容易就会陷入跨浏览器地狱。
又名,您的网站需要有多强大取决于您。
Quirks 模式通常是浏览器尝试修复错误以便正确渲染,但重要的是要记住,如果您的网站以符合标准的模式渲染,它可能会在未来的浏览器中正常渲染(至少暂时如此)。
我在同一条船上。 我为所有内容设计了大量的自定义位置,没有意识到我不小心在文档类型之前渲染了一些调试脚本,将我的网站置于怪异模式。
现在,当我解决问题时,它不再处于怪癖模式,所有定位都偏离了方向,变得更大、更丑。 彻底检查所有内容并尝试重新定位/调整大小将花费很长时间......并且它在怪异模式下看起来已经很完美(并且在所有测试过的浏览器中:Chrome,Edge,FireFox,Clover DevKit(Android 10 WebView) ).
我认为没有理由做这项工作,除了……只是因为你应该这样做。