52

在很多关于设计的文章中,都提到了怪癖模式。有人对纯文本和发展前景有想法吗?

4

6 回答 6

40

您可以在此链接中阅读:

http://en.wikipedia.org/wiki/Quirks_mode

http://www.quirksmode.org/css/quirksmode.html

http://www.cs.tut.fi/~jkorpela/quirks-mode.html

现代浏览器通常会尝试根据 W3C 的建议呈现 HTML 内容。然而,为了提供与旧网页的兼容性,并提供额外的“直观”功能,所有浏览器都支持另一种“怪癖模式”。

然而,Quirks 模式并不是一个标准。任何页面在 quirks 模式下在不同浏览器中的渲染可能会有所不同。只要有可能,最好遵守 W3C 标准,并尽量避免依赖任何过去或现在的浏览器怪癖。

一般来说,quirks 模式在没有正确的 DOCTYPE 声明时打开,在有 DOCTYPE 定义时关闭。但是,无效的 HTML(相对于所选 DOCTYPE)也可能导致浏览器切换到怪癖模式。

有关不同浏览器中不同 quirks 模式的更多信息,请访问QuirksMode.org

于 2009-11-08T08:39:26.027 回答
9

Quirks 模式意味着您的页面在没有声明文档类型的情况下运行,文档类型定义在页面的最顶部,它表示浏览器应该如何读取 HTML。这是 StackOverflows 文档类型:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd">

w3.org 指定了 Web 标准和文档类型,因为 Stack Overflow 使用此文档类型,它必须遵守该文档类型的规范

这是 HTML 4.01 Strict DTD,它不包括 W3C 期望随着对样式表的支持成熟而逐步淘汰的表示属性和元素。作者应尽可能使用 Strict DTD,但在需要支持表示属性和元素时可以使用 Transitional DTD。

于 2009-11-08T08:40:18.880 回答
8

在过去的日子里,当 Web 浏览器没有完整/正确的 CSS 实现时,开发人员依靠这些特性来使他们的页面正确呈现。然而,随着浏览器变得更加符合标准,这些页面不再正确呈现,因为它们是为基本上不同类型的 CSS 编写的。这就是 quirks 模式的用武之地,因为它处理为这些损坏的 CSS 实现编写的页面。

所以在 2009 年,除非你处理的是旧 CSS 或旧浏览器,否则你真的不需要担心 quirks 模式。只需按照当前的 Web 标准编写 CSS,就可以了。

于 2009-11-08T08:44:55.160 回答
8

Quirks 模式也称为 Compatibility Mode - 意味着您的页面在没有声明文档类型的情况下运行(这是老派,因此很可能不再需要) quirks 模式的全部意义在于它是 IE5 的兼容模式。这意味着除了改变布局模式外,它还关闭了自 IE5 以来发明的大部分浏览器功能。在 quirks 模式下,Web 浏览器尝试基于“最佳猜测”呈现/制作代码,这包括对可能非标准或格式错误的代码的慷慨解释。如果您不声明 doctype,浏览器将不得不猜测您正在运行的 HTML/CSS 版本 Quirks 模式使较旧的 HTML 文档仍然能够“工作”,这是 Web 浏览器使用的一种技术,以保持与较旧网页的向后兼容性。

如果您编写了正确的文档类型,则会触发标准模式而不是 Quirks 模式 旧版浏览器(如 Netscape 4)会永久锁定在 quirks 模式

Quirks 模式使您的浏览器能够像旧版浏览器一样运行

这是一种浏览器不守法的模式。它在这种模式下接受任何格式错误的标记,并且对语法、标签和元素不严格,基本上意味着它会接受你的代码,即使它没有正确编写

在 quirks 模式下,浏览器的行为与 Web 早期的行为相同。这样做是为了防止旧网站在新浏览器中破坏太多。

编写一个在所有浏览器中看起来都一样的页面是有困难的。事实上,这是不可能的。许多浏览器都编写了只有它们才能处理的特殊功能。或者他们有特殊的处理方式,与其他浏览器处理它们的方式不同。使用非标准将导致每个浏览器都以怪癖模式运行。但并非所有浏览器在 quirks 模式下的行为都相同,每个浏览器都会恢复到自己独特的渲染引擎,这就是为什么很难在不同的浏览器中获得相似的页面。

你所有的 html5 css 也不会工作,因为它不兼容

Quirks 模式支持 IE6 的 JavaScript 功能,类似于 IE5 的行为以及 IE6、IE7 和 IE8 的 Quirks 模式行为。

在 quirks 模式下,document.body(body-element)是根元素,而在标准模式下,它是 html-element(document.documentElement)。quirks 模式适用于浏览器的旧规则,它们使在万维网出现之前和 HTML5 发明之前编写的旧网站不会中断。所以 quirks 模式只是为了支持那些有错误 CSS 特性的网站。所以现在开发人员有了选择。使用标准(今天的浏览器)或旧浏览器和网站的怪癖模式。在怪癖模式下,我们今天拥有的许多 CSS/HTML 功能无法正常工作。

于 2016-08-13T08:54:35.893 回答
2

http://www.motive.co.nz/glossary/quirks-mode.php

  • 在 quirks 模式下,Web 浏览器尝试基于“最佳猜测”呈现代码,这包括对可能非标准或格式错误的代码的慷慨解释。
  • 如果网页没有文档类型声明或文档类型声明不完整(例如,如果省略了 DTD 的 URI),则 Web 浏览器可能会切换到 quirks 模式。
  • Quirks 模式使旧的 HTML 文档仍然“工作”,并且应该在已知已使用的代码不符合当代技术标准时触发(并且当没有修改遗留内容的意图/预算时)。
于 2017-01-05T06:43:53.940 回答
0

相信我几乎总是经过我测试的答案,而不是它的选票,尤其是从不必要的人那里获得的选票。


除了其他答案,可以通过以下方式检查模式

javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.')

于 2020-05-03T09:26:57.020 回答